[oe] [PATCH 1/4] linux-2.6.30: fix ronetix-pm9g45 board support
Eric Bénard
eric at eukrea.com
Tue Jul 5 16:38:16 UTC 2011
* patches previously fetched are no more present and patches integrated in OE were
updated so upgrade to the latest kernel patches available from Ronetix.
* this patch also enable UBIFS in the defconfig in order to be able to have
a UBIFS rootfs
Signed-off-by: Eric Bénard <eric at eukrea.com>
---
.../0001-ads7846-.c-and-.h-add-swap_xy.patch | 8 +-
.../0002-add-pm9g45-number-in-mach-types.patch | 4896 ---
...02-print-some-more-info-from-atmel_nand.c.patch | 42 +
...newline-at-the-end-of-uncorrectable-error.patch | 27 +
...03-print-some-more-info-from-atmel_nand.c.patch | 40 -
...-CompactFlash-to-at91sam9g45-architecture.patch | 145 +
...newline-at-the-end-of-uncorrectable-error.patch | 25 -
...-CompactFlash-to-at91sam9g45-architecture.patch | 143 -
...05-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch | 62 +
.../ronetix-pm9g45/0006-add-board-pm9g45.patch | 1005 +
...06-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch | 60 -
.../ronetix-pm9g45/0007-add-pm9g45-board.patch | 1004 -
.../0007-pm9g45-default-configuration-files.patch | 3360 ++
.../0008-add-float-flags-in-Makefile.patch | 29 +
.../0008-pm9g45-default-configuration-files.patch | 3358 --
.../0009-add-float-flags-in-Makefile.patch | 27 -
...009-conditional-compile-if-DEDICATED_VRAM.patch | 73 +
...board-version-1.2-and-adjust-memory-selec.patch | 139 +
...010-conditional-compile-if-DEDICATED_VRAM.patch | 70 -
...-board-version-1.2-and-adjust-memory-sele.patch | 138 -
...-enable-USB-Device-with-On-the-go-ability.patch | 44 +
.../0012-one-more-update-of-mach-types.patch | 907 +
.../0013-sam9g45-UHSDP-add-debug-info.patch | 130 +
...anges-FIXME-to-choose-a-base-board-each-b.patch | 830 +
...pactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch | 38 +
...16-enable-GAT.-LCD-backlight-capabilities.patch | 25 +
...5-change-GAT.-color-depth-and-wiring-mode.patch | 32 +
.../0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch | 57 +
.../0019-bb9g45-sound-now-works.patch | 36 +
..._tsadcc-introduce-changes-needed-for-at91.patch | 179 +
.../0021-make-touchscreen-on-EB9G45-works.patch | 62 +
...-bb9g45-USB-connector-J3-to-act-as-device.patch | 112 +
.../ronetix-pm9g45/2.6.30-at91-exp.patch |33460 --------------------
.../linux/linux-2.6.30/ronetix-pm9g45/defconfig | 356 +-
recipes/linux/linux_2.6.30.bb | 42 +-
35 files changed, 7650 insertions(+), 43311 deletions(-)
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-add-pm9g45-number-in-mach-types.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-print-some-more-info-from-atmel_nand.c.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-add-newline-at-the-end-of-uncorrectable-error.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-print-some-more-info-from-atmel_nand.c.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-Add-CompactFlash-to-at91sam9g45-architecture.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-add-newline-at-the-end-of-uncorrectable-error.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-Add-CompactFlash-to-at91sam9g45-architecture.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-add-board-pm9g45.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-add-pm9g45-board.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-pm9g45-default-configuration-files.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-add-float-flags-in-Makefile.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-pm9g45-default-configuration-files.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-add-float-flags-in-Makefile.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-conditional-compile-if-DEDICATED_VRAM.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-add-pm9g45-board-version-1.2-and-adjust-memory-selec.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-conditional-compile-if-DEDICATED_VRAM.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-enable-USB-Device-with-On-the-go-ability.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0012-one-more-update-of-mach-types.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0013-sam9g45-UHSDP-add-debug-info.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0014-A-mix-of-changes-FIXME-to-choose-a-base-board-each-b.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0015-Selects-CompactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0016-enable-GAT.-LCD-backlight-capabilities.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0017-pm9g45-change-GAT.-color-depth-and-wiring-mode.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0019-bb9g45-sound-now-works.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0020-input-atmel_tsadcc-introduce-changes-needed-for-at91.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0021-make-touchscreen-on-EB9G45-works.patch
create mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/0022-bb9g45-USB-connector-J3-to-act-as-device.patch
delete mode 100644 recipes/linux/linux-2.6.30/ronetix-pm9g45/2.6.30-at91-exp.patch
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0001-ads7846-.c-and-.h-add-swap_xy.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0001-ads7846-.c-and-.h-add-swap_xy.patch
index 676b0c2..5e88755 100644
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0001-ads7846-.c-and-.h-add-swap_xy.patch
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0001-ads7846-.c-and-.h-add-swap_xy.patch
@@ -1,8 +1,10 @@
-From 84325d6118849188bd765933e0f2db6795df9756 Mon Sep 17 00:00:00 2001
+From 35c7710305a1f031e114b3d509a63ac8647d0d0b Mon Sep 17 00:00:00 2001
From: Asen Dimov <dimov at ronetix.at>
Date: Tue, 2 Mar 2010 00:58:51 +0200
-Subject: [PATCH] ads7846 .c and .h add swap_xy
+Subject: [[PATCH 01/22] ads7846 .c and .h add swap_xy
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
---
drivers/input/touchscreen/ads7846.c | 24 ++++++++++++++++++++----
include/linux/spi/ads7846.h | 1 +
@@ -96,5 +98,5 @@ index 2ea2032..51948eb 100644
/* Settling time of the analog signals; a function of Vcc and the
* capacitance on the X/Y drivers. If set to non-zero, two samples
--
-1.5.5.6
+1.7.4.4
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-add-pm9g45-number-in-mach-types.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-add-pm9g45-number-in-mach-types.patch
deleted file mode 100644
index 2917c1d..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-add-pm9g45-number-in-mach-types.patch
+++ /dev/null
@@ -1,4896 +0,0 @@
-From bc099148e45275e67743e28b3a620758d2693ca5 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:00:54 +0200
-Subject: [PATCH] add pm9g45 number in mach-types
-
----
- arch/arm/tools/mach-types | 4873 ++++++++++++++++++++++++---------------------
- 1 files changed, 2642 insertions(+), 2231 deletions(-)
-
-diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
-index 165288a..e7ab8d2 100644
---- a/arch/arm/tools/mach-types
-+++ b/arch/arm/tools/mach-types
-@@ -12,2237 +12,2648 @@
- #
- # http://www.arm.linux.org.uk/developer/machines/?action=new
- #
--# Last update: Fri May 29 10:14:20 2009
-+# Last update: Mon Feb 8 16:28:27 2010
- #
- # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
- #
--ebsa110 ARCH_EBSA110 EBSA110 0
--riscpc ARCH_RPC RISCPC 1
--nexuspci ARCH_NEXUSPCI NEXUSPCI 3
--ebsa285 ARCH_EBSA285 EBSA285 4
--netwinder ARCH_NETWINDER NETWINDER 5
--cats ARCH_CATS CATS 6
--tbox ARCH_TBOX TBOX 7
--co285 ARCH_CO285 CO285 8
--clps7110 ARCH_CLPS7110 CLPS7110 9
--archimedes ARCH_ARC ARCHIMEDES 10
--a5k ARCH_A5K A5K 11
--etoile ARCH_ETOILE ETOILE 12
--lacie_nas ARCH_LACIE_NAS LACIE_NAS 13
--clps7500 ARCH_CLPS7500 CLPS7500 14
--shark ARCH_SHARK SHARK 15
--brutus SA1100_BRUTUS BRUTUS 16
--personal_server ARCH_PERSONAL_SERVER PERSONAL_SERVER 17
--itsy SA1100_ITSY ITSY 18
--l7200 ARCH_L7200 L7200 19
--pleb SA1100_PLEB PLEB 20
--integrator ARCH_INTEGRATOR INTEGRATOR 21
--h3600 SA1100_H3600 H3600 22
--ixp1200 ARCH_IXP1200 IXP1200 23
--p720t ARCH_P720T P720T 24
--assabet SA1100_ASSABET ASSABET 25
--victor SA1100_VICTOR VICTOR 26
--lart SA1100_LART LART 27
--ranger SA1100_RANGER RANGER 28
--graphicsclient SA1100_GRAPHICSCLIENT GRAPHICSCLIENT 29
--xp860 SA1100_XP860 XP860 30
--cerf SA1100_CERF CERF 31
--nanoengine SA1100_NANOENGINE NANOENGINE 32
--fpic SA1100_FPIC FPIC 33
--extenex1 SA1100_EXTENEX1 EXTENEX1 34
--sherman SA1100_SHERMAN SHERMAN 35
--accelent_sa SA1100_ACCELENT ACCELENT_SA 36
--accelent_l7200 ARCH_L7200_ACCELENT ACCELENT_L7200 37
--netport SA1100_NETPORT NETPORT 38
--pangolin SA1100_PANGOLIN PANGOLIN 39
--yopy SA1100_YOPY YOPY 40
--coolidge SA1100_COOLIDGE COOLIDGE 41
--huw_webpanel SA1100_HUW_WEBPANEL HUW_WEBPANEL 42
--spotme ARCH_SPOTME SPOTME 43
--freebird ARCH_FREEBIRD FREEBIRD 44
--ti925 ARCH_TI925 TI925 45
--riscstation ARCH_RISCSTATION RISCSTATION 46
--cavy SA1100_CAVY CAVY 47
--jornada720 SA1100_JORNADA720 JORNADA720 48
--omnimeter SA1100_OMNIMETER OMNIMETER 49
--edb7211 ARCH_EDB7211 EDB7211 50
--citygo SA1100_CITYGO CITYGO 51
--pfs168 SA1100_PFS168 PFS168 52
--spot SA1100_SPOT SPOT 53
--flexanet SA1100_FLEXANET FLEXANET 54
--webpal ARCH_WEBPAL WEBPAL 55
--linpda SA1100_LINPDA LINPDA 56
--anakin ARCH_ANAKIN ANAKIN 57
--mvi SA1100_MVI MVI 58
--jupiter SA1100_JUPITER JUPITER 59
--psionw ARCH_PSIONW PSIONW 60
--aln SA1100_ALN ALN 61
--epxa ARCH_CAMELOT CAMELOT 62
--gds2200 SA1100_GDS2200 GDS2200 63
--netbook SA1100_PSION_SERIES7 PSION_SERIES7 64
--xfile SA1100_XFILE XFILE 65
--accelent_ep9312 ARCH_ACCELENT_EP9312 ACCELENT_EP9312 66
--ic200 ARCH_IC200 IC200 67
--creditlart SA1100_CREDITLART CREDITLART 68
--htm SA1100_HTM HTM 69
--iq80310 ARCH_IQ80310 IQ80310 70
--freebot SA1100_FREEBOT FREEBOT 71
--entel ARCH_ENTEL ENTEL 72
--enp3510 ARCH_ENP3510 ENP3510 73
--trizeps SA1100_TRIZEPS TRIZEPS 74
--nesa SA1100_NESA NESA 75
--venus ARCH_VENUS VENUS 76
--tardis ARCH_TARDIS TARDIS 77
--mercury ARCH_MERCURY MERCURY 78
--empeg SA1100_EMPEG EMPEG 79
--adi_evb ARCH_I80200FCC I80200FCC 80
--itt_cpb SA1100_ITT_CPB ITT_CPB 81
--svc SA1100_SVC SVC 82
--alpha2 SA1100_ALPHA2 ALPHA2 84
--alpha1 SA1100_ALPHA1 ALPHA1 85
--netarm ARCH_NETARM NETARM 86
--simpad SA1100_SIMPAD SIMPAD 87
--pda1 ARCH_PDA1 PDA1 88
--lubbock ARCH_LUBBOCK LUBBOCK 89
--aniko ARCH_ANIKO ANIKO 90
--clep7212 ARCH_CLEP7212 CLEP7212 91
--cs89712 ARCH_CS89712 CS89712 92
--weararm SA1100_WEARARM WEARARM 93
--possio_px SA1100_POSSIO_PX POSSIO_PX 94
--sidearm SA1100_SIDEARM SIDEARM 95
--stork SA1100_STORK STORK 96
--shannon SA1100_SHANNON SHANNON 97
--ace ARCH_ACE ACE 98
--ballyarm SA1100_BALLYARM BALLYARM 99
--simputer SA1100_SIMPUTER SIMPUTER 100
--nexterm SA1100_NEXTERM NEXTERM 101
--sa1100_elf SA1100_SA1100_ELF SA1100_ELF 102
--gator SA1100_GATOR GATOR 103
--granite ARCH_GRANITE GRANITE 104
--consus SA1100_CONSUS CONSUS 105
--aaed2000 ARCH_AAED2000 AAED2000 106
--cdb89712 ARCH_CDB89712 CDB89712 107
--graphicsmaster SA1100_GRAPHICSMASTER GRAPHICSMASTER 108
--adsbitsy SA1100_ADSBITSY ADSBITSY 109
--pxa_idp ARCH_PXA_IDP PXA_IDP 110
--plce ARCH_PLCE PLCE 111
--pt_system3 SA1100_PT_SYSTEM3 PT_SYSTEM3 112
--murphy ARCH_MEDALB MEDALB 113
--eagle ARCH_EAGLE EAGLE 114
--dsc21 ARCH_DSC21 DSC21 115
--dsc24 ARCH_DSC24 DSC24 116
--ti5472 ARCH_TI5472 TI5472 117
--autcpu12 ARCH_AUTCPU12 AUTCPU12 118
--uengine ARCH_UENGINE UENGINE 119
--bluestem SA1100_BLUESTEM BLUESTEM 120
--xingu8 ARCH_XINGU8 XINGU8 121
--bushstb ARCH_BUSHSTB BUSHSTB 122
--epsilon1 SA1100_EPSILON1 EPSILON1 123
--balloon SA1100_BALLOON BALLOON 124
--puppy ARCH_PUPPY PUPPY 125
--elroy SA1100_ELROY ELROY 126
--gms720 ARCH_GMS720 GMS720 127
--s24x ARCH_S24X S24X 128
--jtel_clep7312 ARCH_JTEL_CLEP7312 JTEL_CLEP7312 129
--cx821xx ARCH_CX821XX CX821XX 130
--edb7312 ARCH_EDB7312 EDB7312 131
--bsa1110 SA1100_BSA1110 BSA1110 132
--powerpin ARCH_POWERPIN POWERPIN 133
--openarm ARCH_OPENARM OPENARM 134
--whitechapel SA1100_WHITECHAPEL WHITECHAPEL 135
--h3100 SA1100_H3100 H3100 136
--h3800 SA1100_H3800 H3800 137
--blue_v1 ARCH_BLUE_V1 BLUE_V1 138
--pxa_cerf ARCH_PXA_CERF PXA_CERF 139
--arm7tevb ARCH_ARM7TEVB ARM7TEVB 140
--d7400 SA1100_D7400 D7400 141
--piranha ARCH_PIRANHA PIRANHA 142
--sbcamelot SA1100_SBCAMELOT SBCAMELOT 143
--kings SA1100_KINGS KINGS 144
--smdk2400 ARCH_SMDK2400 SMDK2400 145
--collie SA1100_COLLIE COLLIE 146
--idr ARCH_IDR IDR 147
--badge4 SA1100_BADGE4 BADGE4 148
--webnet ARCH_WEBNET WEBNET 149
--d7300 SA1100_D7300 D7300 150
--cep SA1100_CEP CEP 151
--fortunet ARCH_FORTUNET FORTUNET 152
--vc547x ARCH_VC547X VC547X 153
--filewalker SA1100_FILEWALKER FILEWALKER 154
--netgateway SA1100_NETGATEWAY NETGATEWAY 155
--symbol2800 SA1100_SYMBOL2800 SYMBOL2800 156
--suns SA1100_SUNS SUNS 157
--frodo SA1100_FRODO FRODO 158
--ms301 SA1100_MACH_TYTE_MS301 MACH_TYTE_MS301 159
--mx1ads ARCH_MX1ADS MX1ADS 160
--h7201 ARCH_H7201 H7201 161
--h7202 ARCH_H7202 H7202 162
--amico ARCH_AMICO AMICO 163
--iam SA1100_IAM IAM 164
--tt530 SA1100_TT530 TT530 165
--sam2400 ARCH_SAM2400 SAM2400 166
--jornada56x SA1100_JORNADA56X JORNADA56X 167
--active SA1100_ACTIVE ACTIVE 168
--iq80321 ARCH_IQ80321 IQ80321 169
--wid SA1100_WID WID 170
--sabinal ARCH_SABINAL SABINAL 171
--ixp425_matacumbe ARCH_IXP425_MATACUMBE IXP425_MATACUMBE 172
--miniprint SA1100_MINIPRINT MINIPRINT 173
--adm510x ARCH_ADM510X ADM510X 174
--svs200 SA1100_SVS200 SVS200 175
--atg_tcu ARCH_ATG_TCU ATG_TCU 176
--jornada820 SA1100_JORNADA820 JORNADA820 177
--s3c44b0 ARCH_S3C44B0 S3C44B0 178
--margis2 ARCH_MARGIS2 MARGIS2 179
--ks8695 ARCH_KS8695 KS8695 180
--brh ARCH_BRH BRH 181
--s3c2410 ARCH_S3C2410 S3C2410 182
--possio_px30 ARCH_POSSIO_PX30 POSSIO_PX30 183
--s3c2800 ARCH_S3C2800 S3C2800 184
--fleetwood SA1100_FLEETWOOD FLEETWOOD 185
--omaha ARCH_OMAHA OMAHA 186
--ta7 ARCH_TA7 TA7 187
--nova SA1100_NOVA NOVA 188
--hmk ARCH_HMK HMK 189
--karo ARCH_KARO KARO 190
--fester SA1100_FESTER FESTER 191
--gpi ARCH_GPI GPI 192
--smdk2410 ARCH_SMDK2410 SMDK2410 193
--i519 ARCH_I519 I519 194
--nexio SA1100_NEXIO NEXIO 195
--bitbox SA1100_BITBOX BITBOX 196
--g200 SA1100_G200 G200 197
--gill SA1100_GILL GILL 198
--pxa_mercury ARCH_PXA_MERCURY PXA_MERCURY 199
--ceiva ARCH_CEIVA CEIVA 200
--fret SA1100_FRET FRET 201
--emailphone SA1100_EMAILPHONE EMAILPHONE 202
--h3900 ARCH_H3900 H3900 203
--pxa1 ARCH_PXA1 PXA1 204
--koan369 SA1100_KOAN369 KOAN369 205
--cogent ARCH_COGENT COGENT 206
--esl_simputer ARCH_ESL_SIMPUTER ESL_SIMPUTER 207
--esl_simputer_clr ARCH_ESL_SIMPUTER_CLR ESL_SIMPUTER_CLR 208
--esl_simputer_bw ARCH_ESL_SIMPUTER_BW ESL_SIMPUTER_BW 209
--hhp_cradle ARCH_HHP_CRADLE HHP_CRADLE 210
--he500 ARCH_HE500 HE500 211
--inhandelf2 SA1100_INHANDELF2 INHANDELF2 212
--inhandftip SA1100_INHANDFTIP INHANDFTIP 213
--dnp1110 SA1100_DNP1110 DNP1110 214
--pnp1110 SA1100_PNP1110 PNP1110 215
--csb226 ARCH_CSB226 CSB226 216
--arnold SA1100_ARNOLD ARNOLD 217
--voiceblue MACH_VOICEBLUE VOICEBLUE 218
--jz8028 ARCH_JZ8028 JZ8028 219
--h5400 ARCH_H5400 H5400 220
--forte SA1100_FORTE FORTE 221
--acam SA1100_ACAM ACAM 222
--abox SA1100_ABOX ABOX 223
--atmel ARCH_ATMEL ATMEL 224
--sitsang ARCH_SITSANG SITSANG 225
--cpu1110lcdnet SA1100_CPU1110LCDNET CPU1110LCDNET 226
--mpl_vcma9 ARCH_MPL_VCMA9 MPL_VCMA9 227
--opus_a1 ARCH_OPUS_A1 OPUS_A1 228
--daytona ARCH_DAYTONA DAYTONA 229
--killbear SA1100_KILLBEAR KILLBEAR 230
--yoho ARCH_YOHO YOHO 231
--jasper ARCH_JASPER JASPER 232
--dsc25 ARCH_DSC25 DSC25 233
--omap_innovator MACH_OMAP_INNOVATOR OMAP_INNOVATOR 234
--mnci ARCH_RAMSES RAMSES 235
--s28x ARCH_S28X S28X 236
--mport3 ARCH_MPORT3 MPORT3 237
--pxa_eagle250 ARCH_PXA_EAGLE250 PXA_EAGLE250 238
--pdb ARCH_PDB PDB 239
--blue_2g SA1100_BLUE_2G BLUE_2G 240
--bluearch SA1100_BLUEARCH BLUEARCH 241
--ixdp2400 ARCH_IXDP2400 IXDP2400 242
--ixdp2800 ARCH_IXDP2800 IXDP2800 243
--explorer SA1100_EXPLORER EXPLORER 244
--ixdp425 ARCH_IXDP425 IXDP425 245
--chimp ARCH_CHIMP CHIMP 246
--stork_nest ARCH_STORK_NEST STORK_NEST 247
--stork_egg ARCH_STORK_EGG STORK_EGG 248
--wismo SA1100_WISMO WISMO 249
--ezlinx ARCH_EZLINX EZLINX 250
--at91rm9200 ARCH_AT91RM9200 AT91RM9200 251
--adtech_orion ARCH_ADTECH_ORION ADTECH_ORION 252
--neptune ARCH_NEPTUNE NEPTUNE 253
--hackkit SA1100_HACKKIT HACKKIT 254
--pxa_wins30 ARCH_PXA_WINS30 PXA_WINS30 255
--lavinna SA1100_LAVINNA LAVINNA 256
--pxa_uengine ARCH_PXA_UENGINE PXA_UENGINE 257
--innokom ARCH_INNOKOM INNOKOM 258
--bms ARCH_BMS BMS 259
--ixcdp1100 ARCH_IXCDP1100 IXCDP1100 260
--prpmc1100 ARCH_PRPMC1100 PRPMC1100 261
--at91rm9200dk ARCH_AT91RM9200DK AT91RM9200DK 262
--armstick ARCH_ARMSTICK ARMSTICK 263
--armonie ARCH_ARMONIE ARMONIE 264
--mport1 ARCH_MPORT1 MPORT1 265
--s3c5410 ARCH_S3C5410 S3C5410 266
--zcp320a ARCH_ZCP320A ZCP320A 267
--i_box ARCH_I_BOX I_BOX 268
--stlc1502 ARCH_STLC1502 STLC1502 269
--siren ARCH_SIREN SIREN 270
--greenlake ARCH_GREENLAKE GREENLAKE 271
--argus ARCH_ARGUS ARGUS 272
--combadge SA1100_COMBADGE COMBADGE 273
--rokepxa ARCH_ROKEPXA ROKEPXA 274
--cintegrator ARCH_CINTEGRATOR CINTEGRATOR 275
--guidea07 ARCH_GUIDEA07 GUIDEA07 276
--tat257 ARCH_TAT257 TAT257 277
--igp2425 ARCH_IGP2425 IGP2425 278
--bluegrama ARCH_BLUEGRAMMA BLUEGRAMMA 279
--ipod ARCH_IPOD IPOD 280
--adsbitsyx ARCH_ADSBITSYX ADSBITSYX 281
--trizeps2 ARCH_TRIZEPS2 TRIZEPS2 282
--viper ARCH_VIPER VIPER 283
--adsbitsyplus SA1100_ADSBITSYPLUS ADSBITSYPLUS 284
--adsagc SA1100_ADSAGC ADSAGC 285
--stp7312 ARCH_STP7312 STP7312 286
--nx_phnx MACH_NX_PHNX NX_PHNX 287
--wep_ep250 ARCH_WEP_EP250 WEP_EP250 288
--inhandelf3 ARCH_INHANDELF3 INHANDELF3 289
--adi_coyote ARCH_ADI_COYOTE ADI_COYOTE 290
--iyonix ARCH_IYONIX IYONIX 291
--damicam1 ARCH_DAMICAM_SA1110 DAMICAM_SA1110 292
--meg03 ARCH_MEG03 MEG03 293
--pxa_whitechapel ARCH_PXA_WHITECHAPEL PXA_WHITECHAPEL 294
--nwsc ARCH_NWSC NWSC 295
--nwlarm ARCH_NWLARM NWLARM 296
--ixp425_mguard ARCH_IXP425_MGUARD IXP425_MGUARD 297
--pxa_netdcu4 ARCH_PXA_NETDCU4 PXA_NETDCU4 298
--ixdp2401 ARCH_IXDP2401 IXDP2401 299
--ixdp2801 ARCH_IXDP2801 IXDP2801 300
--zodiac ARCH_ZODIAC ZODIAC 301
--armmodul ARCH_ARMMODUL ARMMODUL 302
--ketop SA1100_KETOP KETOP 303
--av7200 ARCH_AV7200 AV7200 304
--arch_ti925 ARCH_ARCH_TI925 ARCH_TI925 305
--acq200 ARCH_ACQ200 ACQ200 306
--pt_dafit SA1100_PT_DAFIT PT_DAFIT 307
--ihba ARCH_IHBA IHBA 308
--quinque ARCH_QUINQUE QUINQUE 309
--nimbraone ARCH_NIMBRAONE NIMBRAONE 310
--nimbra29x ARCH_NIMBRA29X NIMBRA29X 311
--nimbra210 ARCH_NIMBRA210 NIMBRA210 312
--hhp_d95xx ARCH_HHP_D95XX HHP_D95XX 313
--labarm ARCH_LABARM LABARM 314
--m825xx ARCH_M825XX M825XX 315
--m7100 SA1100_M7100 M7100 316
--nipc2 ARCH_NIPC2 NIPC2 317
--fu7202 ARCH_FU7202 FU7202 318
--adsagx ARCH_ADSAGX ADSAGX 319
--pxa_pooh ARCH_PXA_POOH PXA_POOH 320
--bandon ARCH_BANDON BANDON 321
--pcm7210 ARCH_PCM7210 PCM7210 322
--nms9200 ARCH_NMS9200 NMS9200 323
--logodl ARCH_LOGODL LOGODL 324
--m7140 SA1100_M7140 M7140 325
--korebot ARCH_KOREBOT KOREBOT 326
--iq31244 ARCH_IQ31244 IQ31244 327
--koan393 SA1100_KOAN393 KOAN393 328
--inhandftip3 ARCH_INHANDFTIP3 INHANDFTIP3 329
--gonzo ARCH_GONZO GONZO 330
--bast ARCH_BAST BAST 331
--scanpass ARCH_SCANPASS SCANPASS 332
--ep7312_pooh ARCH_EP7312_POOH EP7312_POOH 333
--ta7s ARCH_TA7S TA7S 334
--ta7v ARCH_TA7V TA7V 335
--icarus SA1100_ICARUS ICARUS 336
--h1900 ARCH_H1900 H1900 337
--gemini SA1100_GEMINI GEMINI 338
--axim ARCH_AXIM AXIM 339
--audiotron ARCH_AUDIOTRON AUDIOTRON 340
--h2200 ARCH_H2200 H2200 341
--loox600 ARCH_LOOX600 LOOX600 342
--niop ARCH_NIOP NIOP 343
--dm310 ARCH_DM310 DM310 344
--seedpxa_c2 ARCH_SEEDPXA_C2 SEEDPXA_C2 345
--ixp4xx_mguardpci ARCH_IXP4XX_MGUARD_PCI IXP4XX_MGUARD_PCI 346
--h1940 ARCH_H1940 H1940 347
--scorpio ARCH_SCORPIO SCORPIO 348
--viva ARCH_VIVA VIVA 349
--pxa_xcard ARCH_PXA_XCARD PXA_XCARD 350
--csb335 ARCH_CSB335 CSB335 351
--ixrd425 ARCH_IXRD425 IXRD425 352
--iq80315 ARCH_IQ80315 IQ80315 353
--nmp7312 ARCH_NMP7312 NMP7312 354
--cx861xx ARCH_CX861XX CX861XX 355
--enp2611 ARCH_ENP2611 ENP2611 356
--xda SA1100_XDA XDA 357
--csir_ims ARCH_CSIR_IMS CSIR_IMS 358
--ixp421_dnaeeth ARCH_IXP421_DNAEETH IXP421_DNAEETH 359
--pocketserv9200 ARCH_POCKETSERV9200 POCKETSERV9200 360
--toto ARCH_TOTO TOTO 361
--s3c2440 ARCH_S3C2440 S3C2440 362
--ks8695p ARCH_KS8695P KS8695P 363
--se4000 ARCH_SE4000 SE4000 364
--quadriceps ARCH_QUADRICEPS QUADRICEPS 365
--bronco ARCH_BRONCO BRONCO 366
--esl_wireless_tab ARCH_ESL_WIRELESS_TAB ESL_WIRELESS_TAB 367
--esl_sofcomp ARCH_ESL_SOFCOMP ESL_SOFCOMP 368
--s5c7375 ARCH_S5C7375 S5C7375 369
--spearhead ARCH_SPEARHEAD SPEARHEAD 370
--pantera ARCH_PANTERA PANTERA 371
--prayoglite ARCH_PRAYOGLITE PRAYOGLITE 372
--gumstix ARCH_GUMSTIX GUMSTIX 373
--rcube ARCH_RCUBE RCUBE 374
--rea_olv ARCH_REA_OLV REA_OLV 375
--pxa_iphone ARCH_PXA_IPHONE PXA_IPHONE 376
--s3c3410 ARCH_S3C3410 S3C3410 377
--espd_4510b ARCH_ESPD_4510B ESPD_4510B 378
--mp1x ARCH_MP1X MP1X 379
--at91rm9200tb ARCH_AT91RM9200TB AT91RM9200TB 380
--adsvgx ARCH_ADSVGX ADSVGX 381
--omap_h2 MACH_OMAP_H2 OMAP_H2 382
--pelee ARCH_PELEE PELEE 383
--e740 MACH_E740 E740 384
--iq80331 ARCH_IQ80331 IQ80331 385
--versatile_pb ARCH_VERSATILE_PB VERSATILE_PB 387
--kev7a400 MACH_KEV7A400 KEV7A400 388
--lpd7a400 MACH_LPD7A400 LPD7A400 389
--lpd7a404 MACH_LPD7A404 LPD7A404 390
--fujitsu_camelot ARCH_FUJITSU_CAMELOT FUJITSU_CAMELOT 391
--janus2m ARCH_JANUS2M JANUS2M 392
--embtf MACH_EMBTF EMBTF 393
--hpm MACH_HPM HPM 394
--smdk2410tk MACH_SMDK2410TK SMDK2410TK 395
--smdk2410aj MACH_SMDK2410AJ SMDK2410AJ 396
--streetracer MACH_STREETRACER STREETRACER 397
--eframe MACH_EFRAME EFRAME 398
--csb337 MACH_CSB337 CSB337 399
--pxa_lark MACH_PXA_LARK PXA_LARK 400
--pxa_pnp2110 MACH_PNP2110 PNP2110 401
--tcc72x MACH_TCC72X TCC72X 402
--altair MACH_ALTAIR ALTAIR 403
--kc3 MACH_KC3 KC3 404
--sinteftd MACH_SINTEFTD SINTEFTD 405
--mainstone MACH_MAINSTONE MAINSTONE 406
--aday4x MACH_ADAY4X ADAY4X 407
--lite300 MACH_LITE300 LITE300 408
--s5c7376 MACH_S5C7376 S5C7376 409
--mt02 MACH_MT02 MT02 410
--mport3s MACH_MPORT3S MPORT3S 411
--ra_alpha MACH_RA_ALPHA RA_ALPHA 412
--xcep MACH_XCEP XCEP 413
--arcom_vulcan MACH_ARCOM_VULCAN ARCOM_VULCAN 414
--stargate MACH_STARGATE STARGATE 415
--armadilloj MACH_ARMADILLOJ ARMADILLOJ 416
--elroy_jack MACH_ELROY_JACK ELROY_JACK 417
--backend MACH_BACKEND BACKEND 418
--s5linbox MACH_S5LINBOX S5LINBOX 419
--nomadik MACH_NOMADIK NOMADIK 420
--ia_cpu_9200 MACH_IA_CPU_9200 IA_CPU_9200 421
--at91_bja1 MACH_AT91_BJA1 AT91_BJA1 422
--corgi MACH_CORGI CORGI 423
--poodle MACH_POODLE POODLE 424
--ten MACH_TEN TEN 425
--roverp5p MACH_ROVERP5P ROVERP5P 426
--sc2700 MACH_SC2700 SC2700 427
--ex_eagle MACH_EX_EAGLE EX_EAGLE 428
--nx_pxa12 MACH_NX_PXA12 NX_PXA12 429
--nx_pxa5 MACH_NX_PXA5 NX_PXA5 430
--blackboard2 MACH_BLACKBOARD2 BLACKBOARD2 431
--i819 MACH_I819 I819 432
--ixmb995e MACH_IXMB995E IXMB995E 433
--skyrider MACH_SKYRIDER SKYRIDER 434
--skyhawk MACH_SKYHAWK SKYHAWK 435
--enterprise MACH_ENTERPRISE ENTERPRISE 436
--dep2410 MACH_DEP2410 DEP2410 437
--armcore MACH_ARMCORE ARMCORE 438
--hobbit MACH_HOBBIT HOBBIT 439
--h7210 MACH_H7210 H7210 440
--pxa_netdcu5 MACH_PXA_NETDCU5 PXA_NETDCU5 441
--acc MACH_ACC ACC 442
--esl_sarva MACH_ESL_SARVA ESL_SARVA 443
--xm250 MACH_XM250 XM250 444
--t6tc1xb MACH_T6TC1XB T6TC1XB 445
--ess710 MACH_ESS710 ESS710 446
--mx31ads MACH_MX31ADS MX31ADS 447
--himalaya MACH_HIMALAYA HIMALAYA 448
--bolfenk MACH_BOLFENK BOLFENK 449
--at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450
--edb9312 MACH_EDB9312 EDB9312 451
--omap_generic MACH_OMAP_GENERIC OMAP_GENERIC 452
--aximx3 MACH_AXIMX3 AXIMX3 453
--eb67xdip MACH_EB67XDIP EB67XDIP 454
--webtxs MACH_WEBTXS WEBTXS 455
--hawk MACH_HAWK HAWK 456
--ccat91sbc001 MACH_CCAT91SBC001 CCAT91SBC001 457
--expresso MACH_EXPRESSO EXPRESSO 458
--h4000 MACH_H4000 H4000 459
--dino MACH_DINO DINO 460
--ml675k MACH_ML675K ML675K 461
--edb9301 MACH_EDB9301 EDB9301 462
--edb9315 MACH_EDB9315 EDB9315 463
--reciva_tt MACH_RECIVA_TT RECIVA_TT 464
--cstcb01 MACH_CSTCB01 CSTCB01 465
--cstcb1 MACH_CSTCB1 CSTCB1 466
--shadwell MACH_SHADWELL SHADWELL 467
--goepel263 MACH_GOEPEL263 GOEPEL263 468
--acq100 MACH_ACQ100 ACQ100 469
--mx1fs2 MACH_MX1FS2 MX1FS2 470
--hiptop_g1 MACH_HIPTOP_G1 HIPTOP_G1 471
--sparky MACH_SPARKY SPARKY 472
--ns9750 MACH_NS9750 NS9750 473
--phoenix MACH_PHOENIX PHOENIX 474
--vr1000 MACH_VR1000 VR1000 475
--deisterpxa MACH_DEISTERPXA DEISTERPXA 476
--bcm1160 MACH_BCM1160 BCM1160 477
--pcm022 MACH_PCM022 PCM022 478
--adsgcx MACH_ADSGCX ADSGCX 479
--dreadnaught MACH_DREADNAUGHT DREADNAUGHT 480
--dm320 MACH_DM320 DM320 481
--markov MACH_MARKOV MARKOV 482
--cos7a400 MACH_COS7A400 COS7A400 483
--milano MACH_MILANO MILANO 484
--ue9328 MACH_UE9328 UE9328 485
--uex255 MACH_UEX255 UEX255 486
--ue2410 MACH_UE2410 UE2410 487
--a620 MACH_A620 A620 488
--ocelot MACH_OCELOT OCELOT 489
--cheetah MACH_CHEETAH CHEETAH 490
--omap_perseus2 MACH_OMAP_PERSEUS2 OMAP_PERSEUS2 491
--zvue MACH_ZVUE ZVUE 492
--roverp1 MACH_ROVERP1 ROVERP1 493
--asidial2 MACH_ASIDIAL2 ASIDIAL2 494
--s3c24a0 MACH_S3C24A0 S3C24A0 495
--e800 MACH_E800 E800 496
--e750 MACH_E750 E750 497
--s3c5500 MACH_S3C5500 S3C5500 498
--smdk5500 MACH_SMDK5500 SMDK5500 499
--signalsync MACH_SIGNALSYNC SIGNALSYNC 500
--nbc MACH_NBC NBC 501
--kodiak MACH_KODIAK KODIAK 502
--netbookpro MACH_NETBOOKPRO NETBOOKPRO 503
--hw90200 MACH_HW90200 HW90200 504
--condor MACH_CONDOR CONDOR 505
--cup MACH_CUP CUP 506
--kite MACH_KITE KITE 507
--scb9328 MACH_SCB9328 SCB9328 508
--omap_h3 MACH_OMAP_H3 OMAP_H3 509
--omap_h4 MACH_OMAP_H4 OMAP_H4 510
--n10 MACH_N10 N10 511
--montejade MACH_MONTAJADE MONTAJADE 512
--sg560 MACH_SG560 SG560 513
--dp1000 MACH_DP1000 DP1000 514
--omap_osk MACH_OMAP_OSK OMAP_OSK 515
--rg100v3 MACH_RG100V3 RG100V3 516
--mx2ads MACH_MX2ADS MX2ADS 517
--pxa_kilo MACH_PXA_KILO PXA_KILO 518
--ixp4xx_eagle MACH_IXP4XX_EAGLE IXP4XX_EAGLE 519
--tosa MACH_TOSA TOSA 520
--mb2520f MACH_MB2520F MB2520F 521
--emc1000 MACH_EMC1000 EMC1000 522
--tidsc25 MACH_TIDSC25 TIDSC25 523
--akcpmxl MACH_AKCPMXL AKCPMXL 524
--av3xx MACH_AV3XX AV3XX 525
--avila MACH_AVILA AVILA 526
--pxa_mpm10 MACH_PXA_MPM10 PXA_MPM10 527
--pxa_kyanite MACH_PXA_KYANITE PXA_KYANITE 528
--sgold MACH_SGOLD SGOLD 529
--oscar MACH_OSCAR OSCAR 530
--epxa4usb2 MACH_EPXA4USB2 EPXA4USB2 531
--xsengine MACH_XSENGINE XSENGINE 532
--ip600 MACH_IP600 IP600 533
--mcan2 MACH_MCAN2 MCAN2 534
--ddi_blueridge MACH_DDI_BLUERIDGE DDI_BLUERIDGE 535
--skyminder MACH_SKYMINDER SKYMINDER 536
--lpd79520 MACH_LPD79520 LPD79520 537
--edb9302 MACH_EDB9302 EDB9302 538
--hw90340 MACH_HW90340 HW90340 539
--cip_box MACH_CIP_BOX CIP_BOX 540
--ivpn MACH_IVPN IVPN 541
--rsoc2 MACH_RSOC2 RSOC2 542
--husky MACH_HUSKY HUSKY 543
--boxer MACH_BOXER BOXER 544
--shepherd MACH_SHEPHERD SHEPHERD 545
--aml42800aa MACH_AML42800AA AML42800AA 546
--lpc2294 MACH_LPC2294 LPC2294 548
--switchgrass MACH_SWITCHGRASS SWITCHGRASS 549
--ens_cmu MACH_ENS_CMU ENS_CMU 550
--mm6_sdb MACH_MM6_SDB MM6_SDB 551
--saturn MACH_SATURN SATURN 552
--i30030evb MACH_I30030EVB I30030EVB 553
--mxc27530evb MACH_MXC27530EVB MXC27530EVB 554
--smdk2800 MACH_SMDK2800 SMDK2800 555
--mtwilson MACH_MTWILSON MTWILSON 556
--ziti MACH_ZITI ZITI 557
--grandfather MACH_GRANDFATHER GRANDFATHER 558
--tengine MACH_TENGINE TENGINE 559
--s3c2460 MACH_S3C2460 S3C2460 560
--pdm MACH_PDM PDM 561
--h4700 MACH_H4700 H4700 562
--h6300 MACH_H6300 H6300 563
--rz1700 MACH_RZ1700 RZ1700 564
--a716 MACH_A716 A716 565
--estk2440a MACH_ESTK2440A ESTK2440A 566
--atwixp425 MACH_ATWIXP425 ATWIXP425 567
--csb336 MACH_CSB336 CSB336 568
--rirm2 MACH_RIRM2 RIRM2 569
--cx23518 MACH_CX23518 CX23518 570
--cx2351x MACH_CX2351X CX2351X 571
--computime MACH_COMPUTIME COMPUTIME 572
--izarus MACH_IZARUS IZARUS 573
--pxa_rts MACH_RTS RTS 574
--se5100 MACH_SE5100 SE5100 575
--s3c2510 MACH_S3C2510 S3C2510 576
--csb437tl MACH_CSB437TL CSB437TL 577
--slauson MACH_SLAUSON SLAUSON 578
--pearlriver MACH_PEARLRIVER PEARLRIVER 579
--tdc_p210 MACH_TDC_P210 TDC_P210 580
--sg580 MACH_SG580 SG580 581
--wrsbcarm7 MACH_WRSBCARM7 WRSBCARM7 582
--ipd MACH_IPD IPD 583
--pxa_dnp2110 MACH_PXA_DNP2110 PXA_DNP2110 584
--xaeniax MACH_XAENIAX XAENIAX 585
--somn4250 MACH_SOMN4250 SOMN4250 586
--pleb2 MACH_PLEB2 PLEB2 587
--cornwallis MACH_CORNWALLIS CORNWALLIS 588
--gurney_drv MACH_GURNEY_DRV GURNEY_DRV 589
--chaffee MACH_CHAFFEE CHAFFEE 590
--rms101 MACH_RMS101 RMS101 591
--rx3715 MACH_RX3715 RX3715 592
--swift MACH_SWIFT SWIFT 593
--roverp7 MACH_ROVERP7 ROVERP7 594
--pr818s MACH_PR818S PR818S 595
--trxpro MACH_TRXPRO TRXPRO 596
--nslu2 MACH_NSLU2 NSLU2 597
--e400 MACH_E400 E400 598
--trab MACH_TRAB TRAB 599
--cmc_pu2 MACH_CMC_PU2 CMC_PU2 600
--fulcrum MACH_FULCRUM FULCRUM 601
--netgate42x MACH_NETGATE42X NETGATE42X 602
--str710 MACH_STR710 STR710 603
--ixdpg425 MACH_IXDPG425 IXDPG425 604
--tomtomgo MACH_TOMTOMGO TOMTOMGO 605
--versatile_ab MACH_VERSATILE_AB VERSATILE_AB 606
--edb9307 MACH_EDB9307 EDB9307 607
--sg565 MACH_SG565 SG565 608
--lpd79524 MACH_LPD79524 LPD79524 609
--lpd79525 MACH_LPD79525 LPD79525 610
--rms100 MACH_RMS100 RMS100 611
--kb9200 MACH_KB9200 KB9200 612
--sx1 MACH_SX1 SX1 613
--hms39c7092 MACH_HMS39C7092 HMS39C7092 614
--armadillo MACH_ARMADILLO ARMADILLO 615
--ipcu MACH_IPCU IPCU 616
--loox720 MACH_LOOX720 LOOX720 617
--ixdp465 MACH_IXDP465 IXDP465 618
--ixdp2351 MACH_IXDP2351 IXDP2351 619
--adsvix MACH_ADSVIX ADSVIX 620
--dm270 MACH_DM270 DM270 621
--socltplus MACH_SOCLTPLUS SOCLTPLUS 622
--ecia MACH_ECIA ECIA 623
--cm4008 MACH_CM4008 CM4008 624
--p2001 MACH_P2001 P2001 625
--twister MACH_TWISTER TWISTER 626
--mudshark MACH_MUDSHARK MUDSHARK 627
--hb2 MACH_HB2 HB2 628
--iq80332 MACH_IQ80332 IQ80332 629
--sendt MACH_SENDT SENDT 630
--mx2jazz MACH_MX2JAZZ MX2JAZZ 631
--multiio MACH_MULTIIO MULTIIO 632
--hrdisplay MACH_HRDISPLAY HRDISPLAY 633
--mxc27530ads MACH_MXC27530ADS MXC27530ADS 634
--trizeps3 MACH_TRIZEPS3 TRIZEPS3 635
--zefeerdza MACH_ZEFEERDZA ZEFEERDZA 636
--zefeerdzb MACH_ZEFEERDZB ZEFEERDZB 637
--zefeerdzg MACH_ZEFEERDZG ZEFEERDZG 638
--zefeerdzn MACH_ZEFEERDZN ZEFEERDZN 639
--zefeerdzq MACH_ZEFEERDZQ ZEFEERDZQ 640
--gtwx5715 MACH_GTWX5715 GTWX5715 641
--astro_jack MACH_ASTRO_JACK ASTRO_JACK 643
--tip03 MACH_TIP03 TIP03 644
--a9200ec MACH_A9200EC A9200EC 645
--pnx0105 MACH_PNX0105 PNX0105 646
--adcpoecpu MACH_ADCPOECPU ADCPOECPU 647
--csb637 MACH_CSB637 CSB637 648
--mb9200 MACH_MB9200 MB9200 650
--kulun MACH_KULUN KULUN 651
--snapper MACH_SNAPPER SNAPPER 652
--optima MACH_OPTIMA OPTIMA 653
--dlhsbc MACH_DLHSBC DLHSBC 654
--x30 MACH_X30 X30 655
--n30 MACH_N30 N30 656
--manga_ks8695 MACH_MANGA_KS8695 MANGA_KS8695 657
--ajax MACH_AJAX AJAX 658
--nec_mp900 MACH_NEC_MP900 NEC_MP900 659
--vvtk1000 MACH_VVTK1000 VVTK1000 661
--kafa MACH_KAFA KAFA 662
--vvtk3000 MACH_VVTK3000 VVTK3000 663
--pimx1 MACH_PIMX1 PIMX1 664
--ollie MACH_OLLIE OLLIE 665
--skymax MACH_SKYMAX SKYMAX 666
--jazz MACH_JAZZ JAZZ 667
--tel_t3 MACH_TEL_T3 TEL_T3 668
--aisino_fcr255 MACH_AISINO_FCR255 AISINO_FCR255 669
--btweb MACH_BTWEB BTWEB 670
--dbg_lh79520 MACH_DBG_LH79520 DBG_LH79520 671
--cm41xx MACH_CM41XX CM41XX 672
--ts72xx MACH_TS72XX TS72XX 673
--nggpxa MACH_NGGPXA NGGPXA 674
--csb535 MACH_CSB535 CSB535 675
--csb536 MACH_CSB536 CSB536 676
--pxa_trakpod MACH_PXA_TRAKPOD PXA_TRAKPOD 677
--praxis MACH_PRAXIS PRAXIS 678
--lh75411 MACH_LH75411 LH75411 679
--otom MACH_OTOM OTOM 680
--nexcoder_2440 MACH_NEXCODER_2440 NEXCODER_2440 681
--loox410 MACH_LOOX410 LOOX410 682
--westlake MACH_WESTLAKE WESTLAKE 683
--nsb MACH_NSB NSB 684
--esl_sarva_stn MACH_ESL_SARVA_STN ESL_SARVA_STN 685
--esl_sarva_tft MACH_ESL_SARVA_TFT ESL_SARVA_TFT 686
--esl_sarva_iad MACH_ESL_SARVA_IAD ESL_SARVA_IAD 687
--esl_sarva_acc MACH_ESL_SARVA_ACC ESL_SARVA_ACC 688
--typhoon MACH_TYPHOON TYPHOON 689
--cnav MACH_CNAV CNAV 690
--a730 MACH_A730 A730 691
--netstar MACH_NETSTAR NETSTAR 692
--supercon MACH_PHASEFALE_SUPERCON PHASEFALE_SUPERCON 693
--shiva1100 MACH_SHIVA1100 SHIVA1100 694
--etexsc MACH_ETEXSC ETEXSC 695
--ixdpg465 MACH_IXDPG465 IXDPG465 696
--a9m2410 MACH_A9M2410 A9M2410 697
--a9m2440 MACH_A9M2440 A9M2440 698
--a9m9750 MACH_A9M9750 A9M9750 699
--a9m9360 MACH_A9M9360 A9M9360 700
--unc90 MACH_UNC90 UNC90 701
--eco920 MACH_ECO920 ECO920 702
--satview MACH_SATVIEW SATVIEW 703
--roadrunner MACH_ROADRUNNER ROADRUNNER 704
--at91rm9200ek MACH_AT91RM9200EK AT91RM9200EK 705
--gp32 MACH_GP32 GP32 706
--gem MACH_GEM GEM 707
--i858 MACH_I858 I858 708
--hx2750 MACH_HX2750 HX2750 709
--mxc91131evb MACH_MXC91131EVB MXC91131EVB 710
--p700 MACH_P700 P700 711
--cpe MACH_CPE CPE 712
--spitz MACH_SPITZ SPITZ 713
--nimbra340 MACH_NIMBRA340 NIMBRA340 714
--lpc22xx MACH_LPC22XX LPC22XX 715
--omap_comet3 MACH_COMET3 COMET3 716
--omap_comet4 MACH_COMET4 COMET4 717
--csb625 MACH_CSB625 CSB625 718
--fortunet2 MACH_FORTUNET2 FORTUNET2 719
--s5h2200 MACH_S5H2200 S5H2200 720
--optorm920 MACH_OPTORM920 OPTORM920 721
--adsbitsyxb MACH_ADSBITSYXB ADSBITSYXB 722
--adssphere MACH_ADSSPHERE ADSSPHERE 723
--adsportal MACH_ADSPORTAL ADSPORTAL 724
--ln2410sbc MACH_LN2410SBC LN2410SBC 725
--cb3rufc MACH_CB3RUFC CB3RUFC 726
--mp2usb MACH_MP2USB MP2USB 727
--ntnp425c MACH_NTNP425C NTNP425C 728
--colibri MACH_COLIBRI COLIBRI 729
--pcm7220 MACH_PCM7220 PCM7220 730
--gateway7001 MACH_GATEWAY7001 GATEWAY7001 731
--pcm027 MACH_PCM027 PCM027 732
--cmpxa MACH_CMPXA CMPXA 733
--anubis MACH_ANUBIS ANUBIS 734
--ite8152 MACH_ITE8152 ITE8152 735
--lpc3xxx MACH_LPC3XXX LPC3XXX 736
--puppeteer MACH_PUPPETEER PUPPETEER 737
--e570 MACH_E570 E570 739
--x50 MACH_X50 X50 740
--recon MACH_RECON RECON 741
--xboardgp8 MACH_XBOARDGP8 XBOARDGP8 742
--fpic2 MACH_FPIC2 FPIC2 743
--akita MACH_AKITA AKITA 744
--a81 MACH_A81 A81 745
--svm_sc25x MACH_SVM_SC25X SVM_SC25X 746
--vt020 MACH_VADATECH020 VADATECH020 747
--tli MACH_TLI TLI 748
--edb9315lc MACH_EDB9315LC EDB9315LC 749
--passec MACH_PASSEC PASSEC 750
--ds_tiger MACH_DS_TIGER DS_TIGER 751
--e310 MACH_E310 E310 752
--e330 MACH_E330 E330 753
--rt3000 MACH_RT3000 RT3000 754
--nokia770 MACH_NOKIA770 NOKIA770 755
--pnx0106 MACH_PNX0106 PNX0106 756
--hx21xx MACH_HX21XX HX21XX 757
--faraday MACH_FARADAY FARADAY 758
--sbc9312 MACH_SBC9312 SBC9312 759
--batman MACH_BATMAN BATMAN 760
--jpd201 MACH_JPD201 JPD201 761
--mipsa MACH_MIPSA MIPSA 762
--kacom MACH_KACOM KACOM 763
--swarcocpu MACH_SWARCOCPU SWARCOCPU 764
--swarcodsl MACH_SWARCODSL SWARCODSL 765
--blueangel MACH_BLUEANGEL BLUEANGEL 766
--hairygrama MACH_HAIRYGRAMA HAIRYGRAMA 767
--banff MACH_BANFF BANFF 768
--carmeva MACH_CARMEVA CARMEVA 769
--sam255 MACH_SAM255 SAM255 770
--ppm10 MACH_PPM10 PPM10 771
--edb9315a MACH_EDB9315A EDB9315A 772
--sunset MACH_SUNSET SUNSET 773
--stargate2 MACH_STARGATE2 STARGATE2 774
--intelmote2 MACH_INTELMOTE2 INTELMOTE2 775
--trizeps4 MACH_TRIZEPS4 TRIZEPS4 776
--mainstone2 MACH_MAINSTONE2 MAINSTONE2 777
--ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778
--tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779
--universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780
--hicoarm9 MACH_HICOARM9 HICOARM9 781
--pnx4008 MACH_PNX4008 PNX4008 782
--kws6000 MACH_KWS6000 KWS6000 783
--portux920t MACH_PORTUX920T PORTUX920T 784
--ez_x5 MACH_EZ_X5 EZ_X5 785
--omap_rudolph MACH_OMAP_RUDOLPH OMAP_RUDOLPH 786
--cpuat91 MACH_CPUAT91 CPUAT91 787
--rea9200 MACH_REA9200 REA9200 788
--acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789
--ixp425 MACH_IXP425 IXP425 790
--i30030ads MACH_I30030ADS I30030ADS 791
--perch MACH_PERCH PERCH 792
--eis05r1 MACH_EIS05R1 EIS05R1 793
--pepperpad MACH_PEPPERPAD PEPPERPAD 794
--sb3010 MACH_SB3010 SB3010 795
--rm9200 MACH_RM9200 RM9200 796
--dma03 MACH_DMA03 DMA03 797
--road_s101 MACH_ROAD_S101 ROAD_S101 798
--iq81340sc MACH_IQ81340SC IQ81340SC 799
--iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800
--iq81340mc MACH_IQ81340MC IQ81340MC 801
--iq_nextgen_d MACH_IQ_NEXTGEN_D IQ_NEXTGEN_D 802
--iq_nextgen_e MACH_IQ_NEXTGEN_E IQ_NEXTGEN_E 803
--mallow_at91 MACH_MALLOW_AT91 MALLOW_AT91 804
--cybertracker_i MACH_CYBERTRACKER_I CYBERTRACKER_I 805
--gesbc931x MACH_GESBC931X GESBC931X 806
--centipad MACH_CENTIPAD CENTIPAD 807
--armsoc MACH_ARMSOC ARMSOC 808
--se4200 MACH_SE4200 SE4200 809
--ems197a MACH_EMS197A EMS197A 810
--micro9 MACH_MICRO9 MICRO9 811
--micro9l MACH_MICRO9L MICRO9L 812
--uc5471dsp MACH_UC5471DSP UC5471DSP 813
--sj5471eng MACH_SJ5471ENG SJ5471ENG 814
--none MACH_CMPXA26X CMPXA26X 815
--nc1 MACH_NC NC 816
--omap_palmte MACH_OMAP_PALMTE OMAP_PALMTE 817
--ajax52x MACH_AJAX52X AJAX52X 818
--siriustar MACH_SIRIUSTAR SIRIUSTAR 819
--iodata_hdlg MACH_IODATA_HDLG IODATA_HDLG 820
--at91rm9200utl MACH_AT91RM9200UTL AT91RM9200UTL 821
--biosafe MACH_BIOSAFE BIOSAFE 822
--mp1000 MACH_MP1000 MP1000 823
--parsy MACH_PARSY PARSY 824
--ccxp270 MACH_CCXP CCXP 825
--omap_gsample MACH_OMAP_GSAMPLE OMAP_GSAMPLE 826
--realview_eb MACH_REALVIEW_EB REALVIEW_EB 827
--samoa MACH_SAMOA SAMOA 828
--palmt3 MACH_PALMT3 PALMT3 829
--i878 MACH_I878 I878 830
--borzoi MACH_BORZOI BORZOI 831
--gecko MACH_GECKO GECKO 832
--ds101 MACH_DS101 DS101 833
--omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834
--palmld MACH_PALMLD PALMLD 835
--cc9c MACH_CC9C CC9C 836
--sbc1670 MACH_SBC1670 SBC1670 837
--ixdp28x5 MACH_IXDP28X5 IXDP28X5 838
--omap_palmtt MACH_OMAP_PALMTT OMAP_PALMTT 839
--ml696k MACH_ML696K ML696K 840
--arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841
--osiris MACH_OSIRIS OSIRIS 842
--maestro MACH_MAESTRO MAESTRO 843
--palmte2 MACH_PALMTE2 PALMTE2 844
--ixbbm MACH_IXBBM IXBBM 845
--mx27ads MACH_MX27ADS MX27ADS 846
--ax8004 MACH_AX8004 AX8004 847
--at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
--loft MACH_LOFT LOFT 849
--magpie MACH_MAGPIE MAGPIE 850
--mx21ads MACH_MX21ADS MX21ADS 851
--mb87m3400 MACH_MB87M3400 MB87M3400 852
--mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853
--davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854
--htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855
--tpad MACH_TPAD TPAD 856
--roverp3 MACH_ROVERP3 ROVERP3 857
--jornada928 MACH_JORNADA928 JORNADA928 858
--mv88fxx81 MACH_MV88FXX81 MV88FXX81 859
--stmp36xx MACH_STMP36XX STMP36XX 860
--sxni79524 MACH_SXNI79524 SXNI79524 861
--ams_delta MACH_AMS_DELTA AMS_DELTA 862
--uranium MACH_URANIUM URANIUM 863
--ucon MACH_UCON UCON 864
--nas100d MACH_NAS100D NAS100D 865
--l083 MACH_L083_1000 L083_1000 866
--ezx MACH_EZX EZX 867
--pnx5220 MACH_PNX5220 PNX5220 868
--butte MACH_BUTTE BUTTE 869
--srm2 MACH_SRM2 SRM2 870
--dsbr MACH_DSBR DSBR 871
--crystalball MACH_CRYSTALBALL CRYSTALBALL 872
--tinypxa27x MACH_TINYPXA27X TINYPXA27X 873
--herbie MACH_HERBIE HERBIE 874
--magician MACH_MAGICIAN MAGICIAN 875
--cm4002 MACH_CM4002 CM4002 876
--b4 MACH_B4 B4 877
--maui MACH_MAUI MAUI 878
--cybertracker_g MACH_CYBERTRACKER_G CYBERTRACKER_G 879
--nxdkn MACH_NXDKN NXDKN 880
--mio8390 MACH_MIO8390 MIO8390 881
--omi_board MACH_OMI_BOARD OMI_BOARD 882
--mx21civ MACH_MX21CIV MX21CIV 883
--mahi_cdac MACH_MAHI_CDAC MAHI_CDAC 884
--palmtx MACH_PALMTX PALMTX 885
--s3c2413 MACH_S3C2413 S3C2413 887
--samsys_ep0 MACH_SAMSYS_EP0 SAMSYS_EP0 888
--wg302v1 MACH_WG302V1 WG302V1 889
--wg302v2 MACH_WG302V2 WG302V2 890
--eb42x MACH_EB42X EB42X 891
--iq331es MACH_IQ331ES IQ331ES 892
--cosydsp MACH_COSYDSP COSYDSP 893
--uplat7d_proto MACH_UPLAT7D UPLAT7D 894
--ptdavinci MACH_PTDAVINCI PTDAVINCI 895
--mbus MACH_MBUS MBUS 896
--nadia2vb MACH_NADIA2VB NADIA2VB 897
--r1000 MACH_R1000 R1000 898
--hw90250 MACH_HW90250 HW90250 899
--omap_2430sdp MACH_OMAP_2430SDP OMAP_2430SDP 900
--davinci_evm MACH_DAVINCI_EVM DAVINCI_EVM 901
--omap_tornado MACH_OMAP_TORNADO OMAP_TORNADO 902
--olocreek MACH_OLOCREEK OLOCREEK 903
--palmz72 MACH_PALMZ72 PALMZ72 904
--nxdb500 MACH_NXDB500 NXDB500 905
--apf9328 MACH_APF9328 APF9328 906
--omap_wipoq MACH_OMAP_WIPOQ OMAP_WIPOQ 907
--omap_twip MACH_OMAP_TWIP OMAP_TWIP 908
--treo650 MACH_TREO650 TREO650 909
--acumen MACH_ACUMEN ACUMEN 910
--xp100 MACH_XP100 XP100 911
--fs2410 MACH_FS2410 FS2410 912
--pxa270_cerf MACH_PXA270_CERF PXA270_CERF 913
--sq2ftlpalm MACH_SQ2FTLPALM SQ2FTLPALM 914
--bsemserver MACH_BSEMSERVER BSEMSERVER 915
--netclient MACH_NETCLIENT NETCLIENT 916
--palmt5 MACH_PALMT5 PALMT5 917
--palmtc MACH_PALMTC PALMTC 918
--omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
--mxc30030evb MACH_MXC30030EVB MXC30030EVB 920
--rea_2d MACH_REA_2D REA_2D 921
--eti3e524 MACH_TI3E524 TI3E524 922
--ateb9200 MACH_ATEB9200 ATEB9200 923
--auckland MACH_AUCKLAND AUCKLAND 924
--ak3220m MACH_AK3320M AK3320M 925
--duramax MACH_DURAMAX DURAMAX 926
--n35 MACH_N35 N35 927
--pronghorn MACH_PRONGHORN PRONGHORN 928
--fundy MACH_FUNDY FUNDY 929
--logicpd_pxa270 MACH_LOGICPD_PXA270 LOGICPD_PXA270 930
--cpu777 MACH_CPU777 CPU777 931
--simicon9201 MACH_SIMICON9201 SIMICON9201 932
--leap2_hpm MACH_LEAP2_HPM LEAP2_HPM 933
--cm922txa10 MACH_CM922TXA10 CM922TXA10 934
--sandgate MACH_PXA PXA 935
--sandgate2 MACH_SANDGATE2 SANDGATE2 936
--sandgate2g MACH_SANDGATE2G SANDGATE2G 937
--sandgate2p MACH_SANDGATE2P SANDGATE2P 938
--fred_jack MACH_FRED_JACK FRED_JACK 939
--ttg_color1 MACH_TTG_COLOR1 TTG_COLOR1 940
--nxeb500hmi MACH_NXEB500HMI NXEB500HMI 941
--netdcu8 MACH_NETDCU8 NETDCU8 942
--ng_fvx538 MACH_NG_FVX538 NG_FVX538 944
--ng_fvs338 MACH_NG_FVS338 NG_FVS338 945
--pnx4103 MACH_PNX4103 PNX4103 946
--hesdb MACH_HESDB HESDB 947
--xsilo MACH_XSILO XSILO 948
--espresso MACH_ESPRESSO ESPRESSO 949
--emlc MACH_EMLC EMLC 950
--sisteron MACH_SISTERON SISTERON 951
--rx1950 MACH_RX1950 RX1950 952
--tsc_venus MACH_TSC_VENUS TSC_VENUS 953
--ds101j MACH_DS101J DS101J 954
--mxc30030ads MACH_MXC30030ADS MXC30030ADS 955
--fujitsu_wimaxsoc MACH_FUJITSU_WIMAXSOC FUJITSU_WIMAXSOC 956
--dualpcmodem MACH_DUALPCMODEM DUALPCMODEM 957
--gesbc9312 MACH_GESBC9312 GESBC9312 958
--htcapache MACH_HTCAPACHE HTCAPACHE 959
--ixdp435 MACH_IXDP435 IXDP435 960
--catprovt100 MACH_CATPROVT100 CATPROVT100 961
--picotux1xx MACH_PICOTUX1XX PICOTUX1XX 962
--picotux2xx MACH_PICOTUX2XX PICOTUX2XX 963
--dsmg600 MACH_DSMG600 DSMG600 964
--empc2 MACH_EMPC2 EMPC2 965
--ventura MACH_VENTURA VENTURA 966
--phidget_sbc MACH_PHIDGET_SBC PHIDGET_SBC 967
--ij3k MACH_IJ3K IJ3K 968
--pisgah MACH_PISGAH PISGAH 969
--omap_fsample MACH_OMAP_FSAMPLE OMAP_FSAMPLE 970
--sg720 MACH_SG720 SG720 971
--redfox MACH_REDFOX REDFOX 972
--mysh_ep9315_1 MACH_MYSH_EP9315_1 MYSH_EP9315_1 973
--tpf106 MACH_TPF106 TPF106 974
--at91rm9200kg MACH_AT91RM9200KG AT91RM9200KG 975
--rcmt2 MACH_SLEDB SLEDB 976
--ontrack MACH_ONTRACK ONTRACK 977
--pm1200 MACH_PM1200 PM1200 978
--ess24562 MACH_ESS24XXX ESS24XXX 979
--coremp7 MACH_COREMP7 COREMP7 980
--nexcoder_6446 MACH_NEXCODER_6446 NEXCODER_6446 981
--stvc8380 MACH_STVC8380 STVC8380 982
--teklynx MACH_TEKLYNX TEKLYNX 983
--carbonado MACH_CARBONADO CARBONADO 984
--sysmos_mp730 MACH_SYSMOS_MP730 SYSMOS_MP730 985
--snapper_cl15 MACH_SNAPPER_CL15 SNAPPER_CL15 986
--pgigim MACH_PGIGIM PGIGIM 987
--ptx9160p2 MACH_PTX9160P2 PTX9160P2 988
--dcore1 MACH_DCORE1 DCORE1 989
--victorpxa MACH_VICTORPXA VICTORPXA 990
--mx2dtb MACH_MX2DTB MX2DTB 991
--pxa_irex_er0100 MACH_PXA_IREX_ER0100 PXA_IREX_ER0100 992
--omap_palmz71 MACH_OMAP_PALMZ71 OMAP_PALMZ71 993
--bartec_deg MACH_BARTEC_DEG BARTEC_DEG 994
--hw50251 MACH_HW50251 HW50251 995
--ibox MACH_IBOX IBOX 996
--atlaslh7a404 MACH_ATLASLH7A404 ATLASLH7A404 997
--pt2026 MACH_PT2026 PT2026 998
--htcalpine MACH_HTCALPINE HTCALPINE 999
--bartec_vtu MACH_BARTEC_VTU BARTEC_VTU 1000
--vcoreii MACH_VCOREII VCOREII 1001
--pdnb3 MACH_PDNB3 PDNB3 1002
--htcbeetles MACH_HTCBEETLES HTCBEETLES 1003
--s3c6400 MACH_S3C6400 S3C6400 1004
--s3c2443 MACH_S3C2443 S3C2443 1005
--omap_ldk MACH_OMAP_LDK OMAP_LDK 1006
--smdk2460 MACH_SMDK2460 SMDK2460 1007
--smdk2440 MACH_SMDK2440 SMDK2440 1008
--smdk2412 MACH_SMDK2412 SMDK2412 1009
--webbox MACH_WEBBOX WEBBOX 1010
--cwwndp MACH_CWWNDP CWWNDP 1011
--i839 MACH_DRAGON DRAGON 1012
--opendo_cpu_board MACH_OPENDO_CPU_BOARD OPENDO_CPU_BOARD 1013
--ccm2200 MACH_CCM2200 CCM2200 1014
--etwarm MACH_ETWARM ETWARM 1015
--m93030 MACH_M93030 M93030 1016
--cc7u MACH_CC7U CC7U 1017
--mtt_ranger MACH_MTT_RANGER MTT_RANGER 1018
--nexus MACH_NEXUS NEXUS 1019
--desman MACH_DESMAN DESMAN 1020
--bkde303 MACH_BKDE303 BKDE303 1021
--smdk2413 MACH_SMDK2413 SMDK2413 1022
--aml_m7200 MACH_AML_M7200 AML_M7200 1023
--aml_m5900 MACH_AML_M5900 AML_M5900 1024
--sg640 MACH_SG640 SG640 1025
--edg79524 MACH_EDG79524 EDG79524 1026
--ai2410 MACH_AI2410 AI2410 1027
--ixp465 MACH_IXP465 IXP465 1028
--balloon3 MACH_BALLOON3 BALLOON3 1029
--heins MACH_HEINS HEINS 1030
--mpluseva MACH_MPLUSEVA MPLUSEVA 1031
--rt042 MACH_RT042 RT042 1032
--cwiem MACH_CWIEM CWIEM 1033
--cm_x270 MACH_CM_X270 CM_X270 1034
--cm_x255 MACH_CM_X255 CM_X255 1035
--esh_at91 MACH_ESH_AT91 ESH_AT91 1036
--sandgate3 MACH_SANDGATE3 SANDGATE3 1037
--primo MACH_PRIMO PRIMO 1038
--gemstone MACH_GEMSTONE GEMSTONE 1039
--pronghorn_metro MACH_PRONGHORNMETRO PRONGHORNMETRO 1040
--sidewinder MACH_SIDEWINDER SIDEWINDER 1041
--picomod1 MACH_PICOMOD1 PICOMOD1 1042
--sg590 MACH_SG590 SG590 1043
--akai9307 MACH_AKAI9307 AKAI9307 1044
--fontaine MACH_FONTAINE FONTAINE 1045
--wombat MACH_WOMBAT WOMBAT 1046
--acq300 MACH_ACQ300 ACQ300 1047
--mod272 MACH_MOD_270 MOD_270 1048
--vmc_vc0820 MACH_VC0820 VC0820 1049
--ani_aim MACH_ANI_AIM ANI_AIM 1050
--jellyfish MACH_JELLYFISH JELLYFISH 1051
--amanita MACH_AMANITA AMANITA 1052
--vlink MACH_VLINK VLINK 1053
--dexflex MACH_DEXFLEX DEXFLEX 1054
--eigen_ttq MACH_EIGEN_TTQ EIGEN_TTQ 1055
--arcom_titan MACH_ARCOM_TITAN ARCOM_TITAN 1056
--tabla MACH_TABLA TABLA 1057
--mdirac3 MACH_MDIRAC3 MDIRAC3 1058
--mrhfbp2 MACH_MRHFBP2 MRHFBP2 1059
--at91rm9200rb MACH_AT91RM9200RB AT91RM9200RB 1060
--ani_apm MACH_ANI_APM ANI_APM 1061
--ella1 MACH_ELLA1 ELLA1 1062
--inhand_pxa27x MACH_INHAND_PXA27X INHAND_PXA27X 1063
--inhand_pxa25x MACH_INHAND_PXA25X INHAND_PXA25X 1064
--empos_xm MACH_EMPOS_XM EMPOS_XM 1065
--empos MACH_EMPOS EMPOS 1066
--empos_tiny MACH_EMPOS_TINY EMPOS_TINY 1067
--empos_sm MACH_EMPOS_SM EMPOS_SM 1068
--egret MACH_EGRET EGRET 1069
--ostrich MACH_OSTRICH OSTRICH 1070
--n50 MACH_N50 N50 1071
--ecbat91 MACH_ECBAT91 ECBAT91 1072
--stareast MACH_STAREAST STAREAST 1073
--dspg_dw MACH_DSPG_DW DSPG_DW 1074
--onearm MACH_ONEARM ONEARM 1075
--mrg110_6 MACH_MRG110_6 MRG110_6 1076
--wrt300nv2 MACH_WRT300NV2 WRT300NV2 1077
--xm_bulverde MACH_XM_BULVERDE XM_BULVERDE 1078
--msm6100 MACH_MSM6100 MSM6100 1079
--eti_b1 MACH_ETI_B1 ETI_B1 1080
--za9l_series MACH_ZILOG_ZA9L ZILOG_ZA9L 1081
--bit2440 MACH_BIT2440 BIT2440 1082
--nbi MACH_NBI NBI 1083
--smdk2443 MACH_SMDK2443 SMDK2443 1084
--vdavinci MACH_VDAVINCI VDAVINCI 1085
--atc6 MACH_ATC6 ATC6 1086
--multmdw MACH_MULTMDW MULTMDW 1087
--mba2440 MACH_MBA2440 MBA2440 1088
--ecsd MACH_ECSD ECSD 1089
--palmz31 MACH_PALMZ31 PALMZ31 1090
--fsg MACH_FSG FSG 1091
--razor101 MACH_RAZOR101 RAZOR101 1092
--opera_tdm MACH_OPERA_TDM OPERA_TDM 1093
--comcerto MACH_COMCERTO COMCERTO 1094
--tb0319 MACH_TB0319 TB0319 1095
--kws8000 MACH_KWS8000 KWS8000 1096
--b2 MACH_B2 B2 1097
--lcl54 MACH_LCL54 LCL54 1098
--at91sam9260ek MACH_AT91SAM9260EK AT91SAM9260EK 1099
--glantank MACH_GLANTANK GLANTANK 1100
--n2100 MACH_N2100 N2100 1101
--n4100 MACH_N4100 N4100 1102
--rsc4 MACH_VERTICAL_RSC4 VERTICAL_RSC4 1103
--sg8100 MACH_SG8100 SG8100 1104
--im42xx MACH_IM42XX IM42XX 1105
--ftxx MACH_FTXX FTXX 1106
--lwfusion MACH_LWFUSION LWFUSION 1107
--qt2410 MACH_QT2410 QT2410 1108
--kixrp435 MACH_KIXRP435 KIXRP435 1109
--ccw9c MACH_CCW9C CCW9C 1110
--dabhs MACH_DABHS DABHS 1111
--gzmx MACH_GZMX GZMX 1112
--ipnw100ap MACH_IPNW100AP IPNW100AP 1113
--cc9p9360dev MACH_CC9P9360DEV CC9P9360DEV 1114
--cc9p9750dev MACH_CC9P9750DEV CC9P9750DEV 1115
--cc9p9360val MACH_CC9P9360VAL CC9P9360VAL 1116
--cc9p9750val MACH_CC9P9750VAL CC9P9750VAL 1117
--nx70v MACH_NX70V NX70V 1118
--at91rm9200df MACH_AT91RM9200DF AT91RM9200DF 1119
--se_pilot2 MACH_SE_PILOT2 SE_PILOT2 1120
--mtcn_t800 MACH_MTCN_T800 MTCN_T800 1121
--vcmx212 MACH_VCMX212 VCMX212 1122
--lynx MACH_LYNX LYNX 1123
--at91sam9260id MACH_AT91SAM9260ID AT91SAM9260ID 1124
--hw86052 MACH_HW86052 HW86052 1125
--pilz_pmi3 MACH_PILZ_PMI3 PILZ_PMI3 1126
--edb9302a MACH_EDB9302A EDB9302A 1127
--edb9307a MACH_EDB9307A EDB9307A 1128
--ct_dfs MACH_CT_DFS CT_DFS 1129
--pilz_pmi4 MACH_PILZ_PMI4 PILZ_PMI4 1130
--xceednp_ixp MACH_XCEEDNP_IXP XCEEDNP_IXP 1131
--smdk2442b MACH_SMDK2442B SMDK2442B 1132
--xnode MACH_XNODE XNODE 1133
--aidx270 MACH_AIDX270 AIDX270 1134
--rema MACH_REMA REMA 1135
--bps1000 MACH_BPS1000 BPS1000 1136
--hw90350 MACH_HW90350 HW90350 1137
--omap_3430sdp MACH_OMAP_3430SDP OMAP_3430SDP 1138
--bluetouch MACH_BLUETOUCH BLUETOUCH 1139
--vstms MACH_VSTMS VSTMS 1140
--xsbase270 MACH_XSBASE270 XSBASE270 1141
--at91sam9260ek_cn MACH_AT91SAM9260EK_CN AT91SAM9260EK_CN 1142
--adsturboxb MACH_ADSTURBOXB ADSTURBOXB 1143
--oti4110 MACH_OTI4110 OTI4110 1144
--hme_pxa MACH_HME_PXA HME_PXA 1145
--deisterdca MACH_DEISTERDCA DEISTERDCA 1146
--ces_ssem2 MACH_CES_SSEM2 CES_SSEM2 1147
--ces_mtr MACH_CES_MTR CES_MTR 1148
--tds_avng_sbc MACH_TDS_AVNG_SBC TDS_AVNG_SBC 1149
--everest MACH_EVEREST EVEREST 1150
--pnx4010 MACH_PNX4010 PNX4010 1151
--oxnas MACH_OXNAS OXNAS 1152
--fiori MACH_FIORI FIORI 1153
--ml1200 MACH_ML1200 ML1200 1154
--pecos MACH_PECOS PECOS 1155
--nb2xxx MACH_NB2XXX NB2XXX 1156
--hw6900 MACH_HW6900 HW6900 1157
--cdcs_quoll MACH_CDCS_QUOLL CDCS_QUOLL 1158
--quicksilver MACH_QUICKSILVER QUICKSILVER 1159
--uplat926 MACH_UPLAT926 UPLAT926 1160
--dep2410_dep2410 MACH_DEP2410_THOMAS DEP2410_THOMAS 1161
--dtk2410 MACH_DTK2410 DTK2410 1162
--chili MACH_CHILI CHILI 1163
--demeter MACH_DEMETER DEMETER 1164
--dionysus MACH_DIONYSUS DIONYSUS 1165
--as352x MACH_AS352X AS352X 1166
--service MACH_SERVICE SERVICE 1167
--cs_e9301 MACH_CS_E9301 CS_E9301 1168
--micro9m MACH_MICRO9M MICRO9M 1169
--ia_mospck MACH_IA_MOSPCK IA_MOSPCK 1170
--ql201b MACH_QL201B QL201B 1171
--bbm MACH_BBM BBM 1174
--exxx MACH_EXXX EXXX 1175
--wma11b MACH_WMA11B WMA11B 1176
--pelco_atlas MACH_PELCO_ATLAS PELCO_ATLAS 1177
--g500 MACH_G500 G500 1178
--bug MACH_BUG BUG 1179
--mx33ads MACH_MX33ADS MX33ADS 1180
--chub MACH_CHUB CHUB 1181
--neo1973_gta01 MACH_NEO1973_GTA01 NEO1973_GTA01 1182
--w90n740 MACH_W90N740 W90N740 1183
--medallion_sa2410 MACH_MEDALLION_SA2410 MEDALLION_SA2410 1184
--ia_cpu_9200_2 MACH_IA_CPU_9200_2 IA_CPU_9200_2 1185
--dimmrm9200 MACH_DIMMRM9200 DIMMRM9200 1186
--pm9261 MACH_PM9261 PM9261 1187
--ml7304 MACH_ML7304 ML7304 1189
--ucp250 MACH_UCP250 UCP250 1190
--intboard MACH_INTBOARD INTBOARD 1191
--gulfstream MACH_GULFSTREAM GULFSTREAM 1192
--labquest MACH_LABQUEST LABQUEST 1193
--vcmx313 MACH_VCMX313 VCMX313 1194
--urg200 MACH_URG200 URG200 1195
--cpux255lcdnet MACH_CPUX255LCDNET CPUX255LCDNET 1196
--netdcu9 MACH_NETDCU9 NETDCU9 1197
--netdcu10 MACH_NETDCU10 NETDCU10 1198
--dspg_dga MACH_DSPG_DGA DSPG_DGA 1199
--dspg_dvw MACH_DSPG_DVW DSPG_DVW 1200
--solos MACH_SOLOS SOLOS 1201
--at91sam9263ek MACH_AT91SAM9263EK AT91SAM9263EK 1202
--osstbox MACH_OSSTBOX OSSTBOX 1203
--kbat9261 MACH_KBAT9261 KBAT9261 1204
--ct1100 MACH_CT1100 CT1100 1205
--akcppxa MACH_AKCPPXA AKCPPXA 1206
--ochaya1020 MACH_OCHAYA1020 OCHAYA1020 1207
--hitrack MACH_HITRACK HITRACK 1208
--syme1 MACH_SYME1 SYME1 1209
--syhl1 MACH_SYHL1 SYHL1 1210
--empca400 MACH_EMPCA400 EMPCA400 1211
--em7210 MACH_EM7210 EM7210 1212
--htchermes MACH_HTCHERMES HTCHERMES 1213
--eti_c1 MACH_ETI_C1 ETI_C1 1214
--ac100 MACH_AC100 AC100 1216
--sneetch MACH_SNEETCH SNEETCH 1217
--studentmate MACH_STUDENTMATE STUDENTMATE 1218
--zir2410 MACH_ZIR2410 ZIR2410 1219
--zir2413 MACH_ZIR2413 ZIR2413 1220
--dlonip3 MACH_DLONIP3 DLONIP3 1221
--instream MACH_INSTREAM INSTREAM 1222
--ambarella MACH_AMBARELLA AMBARELLA 1223
--nevis MACH_NEVIS NEVIS 1224
--htc_trinity MACH_HTC_TRINITY HTC_TRINITY 1225
--ql202b MACH_QL202B QL202B 1226
--vpac270 MACH_VPAC270 VPAC270 1227
--rd129 MACH_RD129 RD129 1228
--htcwizard MACH_HTCWIZARD HTCWIZARD 1229
--treo680 MACH_TREO680 TREO680 1230
--tecon_tmezon MACH_TECON_TMEZON TECON_TMEZON 1231
--zylonite MACH_ZYLONITE ZYLONITE 1233
--gene1270 MACH_GENE1270 GENE1270 1234
--zir2412 MACH_ZIR2412 ZIR2412 1235
--mx31lite MACH_MX31LITE MX31LITE 1236
--t700wx MACH_T700WX T700WX 1237
--vf100 MACH_VF100 VF100 1238
--nsb2 MACH_NSB2 NSB2 1239
--nxhmi_bb MACH_NXHMI_BB NXHMI_BB 1240
--nxhmi_re MACH_NXHMI_RE NXHMI_RE 1241
--n4100pro MACH_N4100PRO N4100PRO 1242
--sam9260 MACH_SAM9260 SAM9260 1243
--omap_treo600 MACH_OMAP_TREO600 OMAP_TREO600 1244
--indy2410 MACH_INDY2410 INDY2410 1245
--nelt_a MACH_NELT_A NELT_A 1246
--n311 MACH_N311 N311 1248
--at91sam9260vgk MACH_AT91SAM9260VGK AT91SAM9260VGK 1249
--at91leppe MACH_AT91LEPPE AT91LEPPE 1250
--at91lepccn MACH_AT91LEPCCN AT91LEPCCN 1251
--apc7100 MACH_APC7100 APC7100 1252
--stargazer MACH_STARGAZER STARGAZER 1253
--sonata MACH_SONATA SONATA 1254
--schmoogie MACH_SCHMOOGIE SCHMOOGIE 1255
--aztool MACH_AZTOOL AZTOOL 1256
--mioa701 MACH_MIOA701 MIOA701 1257
--sxni9260 MACH_SXNI9260 SXNI9260 1258
--mxc27520evb MACH_MXC27520EVB MXC27520EVB 1259
--armadillo5x0 MACH_ARMADILLO5X0 ARMADILLO5X0 1260
--mb9260 MACH_MB9260 MB9260 1261
--mb9263 MACH_MB9263 MB9263 1262
--ipac9302 MACH_IPAC9302 IPAC9302 1263
--cc9p9360js MACH_CC9P9360JS CC9P9360JS 1264
--gallium MACH_GALLIUM GALLIUM 1265
--msc2410 MACH_MSC2410 MSC2410 1266
--ghi270 MACH_GHI270 GHI270 1267
--davinci_leonardo MACH_DAVINCI_LEONARDO DAVINCI_LEONARDO 1268
--oiab MACH_OIAB OIAB 1269
--smdk6400 MACH_SMDK6400 SMDK6400 1270
--nokia_n800 MACH_NOKIA_N800 NOKIA_N800 1271
--greenphone MACH_GREENPHONE GREENPHONE 1272
--compex42x MACH_COMPEXWP18 COMPEXWP18 1273
--xmate MACH_XMATE XMATE 1274
--energizer MACH_ENERGIZER ENERGIZER 1275
--ime1 MACH_IME1 IME1 1276
--sweda_tms MACH_SWEDATMS SWEDATMS 1277
--ntnp435c MACH_NTNP435C NTNP435C 1278
--spectro2 MACH_SPECTRO2 SPECTRO2 1279
--h6039 MACH_H6039 H6039 1280
--ep80219 MACH_EP80219 EP80219 1281
--samoa_ii MACH_SAMOA_II SAMOA_II 1282
--cwmxl MACH_CWMXL CWMXL 1283
--as9200 MACH_AS9200 AS9200 1284
--sfx1149 MACH_SFX1149 SFX1149 1285
--navi010 MACH_NAVI010 NAVI010 1286
--multmdp MACH_MULTMDP MULTMDP 1287
--scb9520 MACH_SCB9520 SCB9520 1288
--htcathena MACH_HTCATHENA HTCATHENA 1289
--xp179 MACH_XP179 XP179 1290
--h4300 MACH_H4300 H4300 1291
--goramo_mlr MACH_GORAMO_MLR GORAMO_MLR 1292
--mxc30020evb MACH_MXC30020EVB MXC30020EVB 1293
--adsbitsyg5 MACH_ADSBITSYG5 ADSBITSYG5 1294
--adsportalplus MACH_ADSPORTALPLUS ADSPORTALPLUS 1295
--mmsp2plus MACH_MMSP2PLUS MMSP2PLUS 1296
--em_x270 MACH_EM_X270 EM_X270 1297
--tpp302 MACH_TPP302 TPP302 1298
--tpp104 MACH_TPM104 TPM104 1299
--tpm102 MACH_TPM102 TPM102 1300
--tpm109 MACH_TPM109 TPM109 1301
--fbxo1 MACH_FBXO1 FBXO1 1302
--hxd8 MACH_HXD8 HXD8 1303
--neo1973_gta02 MACH_NEO1973_GTA02 NEO1973_GTA02 1304
--emtest MACH_EMTEST EMTEST 1305
--ad6900 MACH_AD6900 AD6900 1306
--europa MACH_EUROPA EUROPA 1307
--metroconnect MACH_METROCONNECT METROCONNECT 1308
--ez_s2410 MACH_EZ_S2410 EZ_S2410 1309
--ez_s2440 MACH_EZ_S2440 EZ_S2440 1310
--ez_ep9312 MACH_EZ_EP9312 EZ_EP9312 1311
--ez_ep9315 MACH_EZ_EP9315 EZ_EP9315 1312
--ez_x7 MACH_EZ_X7 EZ_X7 1313
--godotdb MACH_GODOTDB GODOTDB 1314
--mistral MACH_MISTRAL MISTRAL 1315
--msm MACH_MSM MSM 1316
--ct5910 MACH_CT5910 CT5910 1317
--ct5912 MACH_CT5912 CT5912 1318
--hynet_ine MACH_HYNET_INE HYNET_INE 1319
--hynet_app MACH_HYNET_APP HYNET_APP 1320
--msm7200 MACH_MSM7200 MSM7200 1321
--msm7600 MACH_MSM7600 MSM7600 1322
--ceb255 MACH_CEB255 CEB255 1323
--ciel MACH_CIEL CIEL 1324
--slm5650 MACH_SLM5650 SLM5650 1325
--at91sam9rlek MACH_AT91SAM9RLEK AT91SAM9RLEK 1326
--comtech_router MACH_COMTECH_ROUTER COMTECH_ROUTER 1327
--sbc2410x MACH_SBC2410X SBC2410X 1328
--at4x0bd MACH_AT4X0BD AT4X0BD 1329
--cbifr MACH_CBIFR CBIFR 1330
--arcom_quantum MACH_ARCOM_QUANTUM ARCOM_QUANTUM 1331
--matrix520 MACH_MATRIX520 MATRIX520 1332
--matrix510 MACH_MATRIX510 MATRIX510 1333
--matrix500 MACH_MATRIX500 MATRIX500 1334
--m501 MACH_M501 M501 1335
--aaeon1270 MACH_AAEON1270 AAEON1270 1336
--matrix500ev MACH_MATRIX500EV MATRIX500EV 1337
--pac500 MACH_PAC500 PAC500 1338
--pnx8181 MACH_PNX8181 PNX8181 1339
--colibri320 MACH_COLIBRI320 COLIBRI320 1340
--aztoolbb MACH_AZTOOLBB AZTOOLBB 1341
--aztoolg2 MACH_AZTOOLG2 AZTOOLG2 1342
--dvlhost MACH_DVLHOST DVLHOST 1343
--zir9200 MACH_ZIR9200 ZIR9200 1344
--zir9260 MACH_ZIR9260 ZIR9260 1345
--cocopah MACH_COCOPAH COCOPAH 1346
--nds MACH_NDS NDS 1347
--rosencrantz MACH_ROSENCRANTZ ROSENCRANTZ 1348
--fttx_odsc MACH_FTTX_ODSC FTTX_ODSC 1349
--classe_r6904 MACH_CLASSE_R6904 CLASSE_R6904 1350
--cam60 MACH_CAM60 CAM60 1351
--mxc30031ads MACH_MXC30031ADS MXC30031ADS 1352
--datacall MACH_DATACALL DATACALL 1353
--at91eb01 MACH_AT91EB01 AT91EB01 1354
--rty MACH_RTY RTY 1355
--dwl2100 MACH_DWL2100 DWL2100 1356
--vinsi MACH_VINSI VINSI 1357
--db88f5281 MACH_DB88F5281 DB88F5281 1358
--csb726 MACH_CSB726 CSB726 1359
--tik27 MACH_TIK27 TIK27 1360
--mx_uc7420 MACH_MX_UC7420 MX_UC7420 1361
--rirm3 MACH_RIRM3 RIRM3 1362
--pelco_odyssey MACH_PELCO_ODYSSEY PELCO_ODYSSEY 1363
--adx_abox MACH_ADX_ABOX ADX_ABOX 1365
--adx_tpid MACH_ADX_TPID ADX_TPID 1366
--minicheck MACH_MINICHECK MINICHECK 1367
--idam MACH_IDAM IDAM 1368
--mario_mx MACH_MARIO_MX MARIO_MX 1369
--vi1888 MACH_VI1888 VI1888 1370
--zr4230 MACH_ZR4230 ZR4230 1371
--t1_ix_blue MACH_T1_IX_BLUE T1_IX_BLUE 1372
--syhq2 MACH_SYHQ2 SYHQ2 1373
--computime_r3 MACH_COMPUTIME_R3 COMPUTIME_R3 1374
--oratis MACH_ORATIS ORATIS 1375
--mikko MACH_MIKKO MIKKO 1376
--holon MACH_HOLON HOLON 1377
--olip8 MACH_OLIP8 OLIP8 1378
--ghi270hg MACH_GHI270HG GHI270HG 1379
--davinci_dm6467_evm MACH_DAVINCI_DM6467_EVM DAVINCI_DM6467_EVM 1380
--davinci_dm355_evm MACH_DAVINCI_DM355_EVM DAVINCI_DM355_EVM 1381
--blackriver MACH_BLACKRIVER BLACKRIVER 1383
--sandgate_wp MACH_SANDGATEWP SANDGATEWP 1384
--cdotbwsg MACH_CDOTBWSG CDOTBWSG 1385
--quark963 MACH_QUARK963 QUARK963 1386
--csb735 MACH_CSB735 CSB735 1387
--littleton MACH_LITTLETON LITTLETON 1388
--mio_p550 MACH_MIO_P550 MIO_P550 1389
--motion2440 MACH_MOTION2440 MOTION2440 1390
--imm500 MACH_IMM500 IMM500 1391
--homematic MACH_HOMEMATIC HOMEMATIC 1392
--ermine MACH_ERMINE ERMINE 1393
--kb9202b MACH_KB9202B KB9202B 1394
--hs1xx MACH_HS1XX HS1XX 1395
--studentmate2440 MACH_STUDENTMATE2440 STUDENTMATE2440 1396
--arvoo_l1_z1 MACH_ARVOO_L1_Z1 ARVOO_L1_Z1 1397
--dep2410k MACH_DEP2410K DEP2410K 1398
--xxsvideo MACH_XXSVIDEO XXSVIDEO 1399
--im4004 MACH_IM4004 IM4004 1400
--ochaya1050 MACH_OCHAYA1050 OCHAYA1050 1401
--lep9261 MACH_LEP9261 LEP9261 1402
--svenmeb MACH_SVENMEB SVENMEB 1403
--fortunet2ne MACH_FORTUNET2NE FORTUNET2NE 1404
--nxhx MACH_NXHX NXHX 1406
--realview_pb11mp MACH_REALVIEW_PB11MP REALVIEW_PB11MP 1407
--ids500 MACH_IDS500 IDS500 1408
--ors_n725 MACH_ORS_N725 ORS_N725 1409
--hsdarm MACH_HSDARM HSDARM 1410
--sha_pon003 MACH_SHA_PON003 SHA_PON003 1411
--sha_pon004 MACH_SHA_PON004 SHA_PON004 1412
--sha_pon007 MACH_SHA_PON007 SHA_PON007 1413
--sha_pon011 MACH_SHA_PON011 SHA_PON011 1414
--h6042 MACH_H6042 H6042 1415
--h6043 MACH_H6043 H6043 1416
--looxc550 MACH_LOOXC550 LOOXC550 1417
--cnty_titan MACH_CNTY_TITAN CNTY_TITAN 1418
--app3xx MACH_APP3XX APP3XX 1419
--sideoatsgrama MACH_SIDEOATSGRAMA SIDEOATSGRAMA 1420
--treo700p MACH_TREO700P TREO700P 1421
--treo700w MACH_TREO700W TREO700W 1422
--treo750 MACH_TREO750 TREO750 1423
--treo755p MACH_TREO755P TREO755P 1424
--ezreganut9200 MACH_EZREGANUT9200 EZREGANUT9200 1425
--sarge MACH_SARGE SARGE 1426
--a696 MACH_A696 A696 1427
--turtle1916 MACH_TURTLE TURTLE 1428
--mx27_3ds MACH_MX27_3DS MX27_3DS 1430
--bishop MACH_BISHOP BISHOP 1431
--pxx MACH_PXX PXX 1432
--redwood MACH_REDWOOD REDWOOD 1433
--omap_2430dlp MACH_OMAP_2430DLP OMAP_2430DLP 1436
--omap_2430osk MACH_OMAP_2430OSK OMAP_2430OSK 1437
--sardine MACH_SARDINE SARDINE 1438
--halibut MACH_HALIBUT HALIBUT 1439
--trout MACH_TROUT TROUT 1440
--goldfish MACH_GOLDFISH GOLDFISH 1441
--gesbc2440 MACH_GESBC2440 GESBC2440 1442
--nomad MACH_NOMAD NOMAD 1443
--rosalind MACH_ROSALIND ROSALIND 1444
--cc9p9215 MACH_CC9P9215 CC9P9215 1445
--cc9p9210 MACH_CC9P9210 CC9P9210 1446
--cc9p9215js MACH_CC9P9215JS CC9P9215JS 1447
--cc9p9210js MACH_CC9P9210JS CC9P9210JS 1448
--nasffe MACH_NASFFE NASFFE 1449
--tn2x0bd MACH_TN2X0BD TN2X0BD 1450
--gwmpxa MACH_GWMPXA GWMPXA 1451
--exyplus MACH_EXYPLUS EXYPLUS 1452
--jadoo21 MACH_JADOO21 JADOO21 1453
--looxn560 MACH_LOOXN560 LOOXN560 1454
--bonsai MACH_BONSAI BONSAI 1455
--adsmilgato MACH_ADSMILGATO ADSMILGATO 1456
--gba MACH_GBA GBA 1457
--h6044 MACH_H6044 H6044 1458
--app MACH_APP APP 1459
--tct_hammer MACH_TCT_HAMMER TCT_HAMMER 1460
--herald MACH_HERMES HERMES 1461
--artemis MACH_ARTEMIS ARTEMIS 1462
--htctitan MACH_HTCTITAN HTCTITAN 1463
--qranium MACH_QRANIUM QRANIUM 1464
--adx_wsc2 MACH_ADX_WSC2 ADX_WSC2 1465
--adx_medcom MACH_ADX_MEDCOM ADX_MEDCOM 1466
--bboard MACH_BBOARD BBOARD 1467
--cambria MACH_CAMBRIA CAMBRIA 1468
--mt7xxx MACH_MT7XXX MT7XXX 1469
--matrix512 MACH_MATRIX512 MATRIX512 1470
--matrix522 MACH_MATRIX522 MATRIX522 1471
--ipac5010 MACH_IPAC5010 IPAC5010 1472
--sakura MACH_SAKURA SAKURA 1473
--grocx MACH_GROCX GROCX 1474
--pm9263 MACH_PM9263 PM9263 1475
--sim_one MACH_SIM_ONE SIM_ONE 1476
--acq132 MACH_ACQ132 ACQ132 1477
--datr MACH_DATR DATR 1478
--actux1 MACH_ACTUX1 ACTUX1 1479
--actux2 MACH_ACTUX2 ACTUX2 1480
--actux3 MACH_ACTUX3 ACTUX3 1481
--flexit MACH_FLEXIT FLEXIT 1482
--bh2x0bd MACH_BH2X0BD BH2X0BD 1483
--atb2002 MACH_ATB2002 ATB2002 1484
--xenon MACH_XENON XENON 1485
--fm607 MACH_FM607 FM607 1486
--matrix514 MACH_MATRIX514 MATRIX514 1487
--matrix524 MACH_MATRIX524 MATRIX524 1488
--inpod MACH_INPOD INPOD 1489
--jive MACH_JIVE JIVE 1490
--tll_mx21 MACH_TLL_MX21 TLL_MX21 1491
--sbc2800 MACH_SBC2800 SBC2800 1492
--cc7ucamry MACH_CC7UCAMRY CC7UCAMRY 1493
--ubisys_p9_sc15 MACH_UBISYS_P9_SC15 UBISYS_P9_SC15 1494
--ubisys_p9_ssc2d10 MACH_UBISYS_P9_SSC2D10 UBISYS_P9_SSC2D10 1495
--ubisys_p9_rcu3 MACH_UBISYS_P9_RCU3 UBISYS_P9_RCU3 1496
--aml_m8000 MACH_AML_M8000 AML_M8000 1497
--snapper_270 MACH_SNAPPER_270 SNAPPER_270 1498
--omap_bbx MACH_OMAP_BBX OMAP_BBX 1499
--ucn2410 MACH_UCN2410 UCN2410 1500
--sam9_l9260 MACH_SAM9_L9260 SAM9_L9260 1501
--eti_c2 MACH_ETI_C2 ETI_C2 1502
--avalanche MACH_AVALANCHE AVALANCHE 1503
--realview_pb1176 MACH_REALVIEW_PB1176 REALVIEW_PB1176 1504
--dp1500 MACH_DP1500 DP1500 1505
--apple_iphone MACH_APPLE_IPHONE APPLE_IPHONE 1506
--yl9200 MACH_YL9200 YL9200 1507
--rd88f5182 MACH_RD88F5182 RD88F5182 1508
--kurobox_pro MACH_KUROBOX_PRO KUROBOX_PRO 1509
--se_poet MACH_SE_POET SE_POET 1510
--mx31_3ds MACH_MX31_3DS MX31_3DS 1511
--r270 MACH_R270 R270 1512
--armour21 MACH_ARMOUR21 ARMOUR21 1513
--dt2 MACH_DT2 DT2 1514
--vt4 MACH_VT4 VT4 1515
--tyco320 MACH_TYCO320 TYCO320 1516
--adma MACH_ADMA ADMA 1517
--wp188 MACH_WP188 WP188 1518
--corsica MACH_CORSICA CORSICA 1519
--bigeye MACH_BIGEYE BIGEYE 1520
--tll5000 MACH_TLL5000 TLL5000 1522
--bebot MACH_BEBOT BEBOT 1523
--qong MACH_QONG QONG 1524
--tcompact MACH_TCOMPACT TCOMPACT 1525
--puma5 MACH_PUMA5 PUMA5 1526
--elara MACH_ELARA ELARA 1527
--ellington MACH_ELLINGTON ELLINGTON 1528
--xda_atom MACH_XDA_ATOM XDA_ATOM 1529
--energizer2 MACH_ENERGIZER2 ENERGIZER2 1530
--odin MACH_ODIN ODIN 1531
--actux4 MACH_ACTUX4 ACTUX4 1532
--esl_omap MACH_ESL_OMAP ESL_OMAP 1533
--omap2evm MACH_OMAP2EVM OMAP2EVM 1534
--omap3evm MACH_OMAP3EVM OMAP3EVM 1535
--adx_pcu57 MACH_ADX_PCU57 ADX_PCU57 1536
--monaco MACH_MONACO MONACO 1537
--levante MACH_LEVANTE LEVANTE 1538
--tmxipx425 MACH_TMXIPX425 TMXIPX425 1539
--leep MACH_LEEP LEEP 1540
--raad MACH_RAAD RAAD 1541
--dns323 MACH_DNS323 DNS323 1542
--ap1000 MACH_AP1000 AP1000 1543
--a9sam6432 MACH_A9SAM6432 A9SAM6432 1544
--shiny MACH_SHINY SHINY 1545
--omap3_beagle MACH_OMAP3_BEAGLE OMAP3_BEAGLE 1546
--csr_bdb2 MACH_CSR_BDB2 CSR_BDB2 1547
--nokia_n810 MACH_NOKIA_N810 NOKIA_N810 1548
--c270 MACH_C270 C270 1549
--sentry MACH_SENTRY SENTRY 1550
--pcm038 MACH_PCM038 PCM038 1551
--anc300 MACH_ANC300 ANC300 1552
--htckaiser MACH_HTCKAISER HTCKAISER 1553
--sbat100 MACH_SBAT100 SBAT100 1554
--modunorm MACH_MODUNORM MODUNORM 1555
--pelos_twarm MACH_PELOS_TWARM PELOS_TWARM 1556
--flank MACH_FLANK FLANK 1557
--sirloin MACH_SIRLOIN SIRLOIN 1558
--brisket MACH_BRISKET BRISKET 1559
--chuck MACH_CHUCK CHUCK 1560
--otter MACH_OTTER OTTER 1561
--davinci_ldk MACH_DAVINCI_LDK DAVINCI_LDK 1562
--phreedom MACH_PHREEDOM PHREEDOM 1563
--sg310 MACH_SG310 SG310 1564
--ts_x09 MACH_TS209 TS209 1565
--at91cap9adk MACH_AT91CAP9ADK AT91CAP9ADK 1566
--tion9315 MACH_TION9315 TION9315 1567
--mast MACH_MAST MAST 1568
--pfw MACH_PFW PFW 1569
--yl_p2440 MACH_YL_P2440 YL_P2440 1570
--zsbc32 MACH_ZSBC32 ZSBC32 1571
--omap_pace2 MACH_OMAP_PACE2 OMAP_PACE2 1572
--imx_pace2 MACH_IMX_PACE2 IMX_PACE2 1573
--mx31moboard MACH_MX31MOBOARD MX31MOBOARD 1574
--mx37_3ds MACH_MX37_3DS MX37_3DS 1575
--rcc MACH_RCC RCC 1576
--dmp MACH_ARM9 ARM9 1577
--vision_ep9307 MACH_VISION_EP9307 VISION_EP9307 1578
--scly1000 MACH_SCLY1000 SCLY1000 1579
--fontel_ep MACH_FONTEL_EP FONTEL_EP 1580
--voiceblue3g MACH_VOICEBLUE3G VOICEBLUE3G 1581
--tt9200 MACH_TT9200 TT9200 1582
--digi2410 MACH_DIGI2410 DIGI2410 1583
--terastation_pro2 MACH_TERASTATION_PRO2 TERASTATION_PRO2 1584
--linkstation_pro MACH_LINKSTATION_PRO LINKSTATION_PRO 1585
--motorola_a780 MACH_MOTOROLA_A780 MOTOROLA_A780 1587
--motorola_e6 MACH_MOTOROLA_E6 MOTOROLA_E6 1588
--motorola_e2 MACH_MOTOROLA_E2 MOTOROLA_E2 1589
--motorola_e680 MACH_MOTOROLA_E680 MOTOROLA_E680 1590
--ur2410 MACH_UR2410 UR2410 1591
--tas9261 MACH_TAS9261 TAS9261 1592
--davinci_hermes_hd MACH_HERMES_HD HERMES_HD 1593
--davinci_perseo_hd MACH_PERSEO_HD PERSEO_HD 1594
--stargazer2 MACH_STARGAZER2 STARGAZER2 1595
--e350 MACH_E350 E350 1596
--wpcm450 MACH_WPCM450 WPCM450 1597
--cartesio MACH_CARTESIO CARTESIO 1598
--toybox MACH_TOYBOX TOYBOX 1599
--tx27 MACH_TX27 TX27 1600
--ts409 MACH_TS409 TS409 1601
--p300 MACH_P300 P300 1602
--xdacomet MACH_XDACOMET XDACOMET 1603
--dexflex2 MACH_DEXFLEX2 DEXFLEX2 1604
--ow MACH_OW OW 1605
--armebs3 MACH_ARMEBS3 ARMEBS3 1606
--u3 MACH_U3 U3 1607
--smdk2450 MACH_SMDK2450 SMDK2450 1608
--rsi_ews MACH_RSI_EWS RSI_EWS 1609
--tnb MACH_TNB TNB 1610
--toepath MACH_TOEPATH TOEPATH 1611
--kb9263 MACH_KB9263 KB9263 1612
--mt7108 MACH_MT7108 MT7108 1613
--smtr2440 MACH_SMTR2440 SMTR2440 1614
--manao MACH_MANAO MANAO 1615
--cm_x300 MACH_CM_X300 CM_X300 1616
--gulfstream_kp MACH_GULFSTREAM_KP GULFSTREAM_KP 1617
--lanreadyfn522 MACH_LANREADYFN522 LANREADYFN522 1618
--arma37 MACH_ARMA37 ARMA37 1619
--mendel MACH_MENDEL MENDEL 1620
--pelco_iliad MACH_PELCO_ILIAD PELCO_ILIAD 1621
--unit2p MACH_UNIT2P UNIT2P 1622
--inc20otter MACH_INC20OTTER INC20OTTER 1623
--at91sam9g20ek MACH_AT91SAM9G20EK AT91SAM9G20EK 1624
--sc_ge2 MACH_STORCENTER STORCENTER 1625
--smdk6410 MACH_SMDK6410 SMDK6410 1626
--u300 MACH_U300 U300 1627
--u500 MACH_U500 U500 1628
--ds9260 MACH_DS9260 DS9260 1629
--riverrock MACH_RIVERROCK RIVERROCK 1630
--scibath MACH_SCIBATH SCIBATH 1631
--at91sam7se MACH_AT91SAM7SE512EK AT91SAM7SE512EK 1632
--wrt350n_v2 MACH_WRT350N_V2 WRT350N_V2 1633
--multimedia MACH_MULTIMEDIA MULTIMEDIA 1634
--marvin MACH_MARVIN MARVIN 1635
--x500 MACH_X500 X500 1636
--awlug4lcu MACH_AWLUG4LCU AWLUG4LCU 1637
--palermoc MACH_PALERMOC PALERMOC 1638
--omap_ldp MACH_OMAP_LDP OMAP_LDP 1639
--ip500 MACH_IP500 IP500 1640
--ase2 MACH_ASE2 ASE2 1642
--mx35evb MACH_MX35EVB MX35EVB 1643
--aml_m8050 MACH_AML_M8050 AML_M8050 1644
--mx35_3ds MACH_MX35_3DS MX35_3DS 1645
--mars MACH_MARS MARS 1646
--ntosd_644xa MACH_NTOSD_644XA NTOSD_644XA 1647
--badger MACH_BADGER BADGER 1648
--trizeps4wl MACH_TRIZEPS4WL TRIZEPS4WL 1649
--trizeps5 MACH_TRIZEPS5 TRIZEPS5 1650
--marlin MACH_MARLIN MARLIN 1651
--ts78xx MACH_TS78XX TS78XX 1652
--hpipaq214 MACH_HPIPAQ214 HPIPAQ214 1653
--at572d940dcm MACH_AT572D940DCM AT572D940DCM 1654
--ne1board MACH_NE1BOARD NE1BOARD 1655
--zante MACH_ZANTE ZANTE 1656
--sffsdr MACH_SFFSDR SFFSDR 1657
--tw2662 MACH_TW2662 TW2662 1658
--vf10xx MACH_VF10XX VF10XX 1659
--zoran43xx MACH_ZORAN43XX ZORAN43XX 1660
--sonix926 MACH_SONIX926 SONIX926 1661
--celestialsemi MACH_CELESTIALSEMI CELESTIALSEMI 1662
--cc9m2443 MACH_CC9M2443 CC9M2443 1663
--tw5334 MACH_TW5334 TW5334 1664
--omap_htcartemis MACH_HTCARTEMIS HTCARTEMIS 1665
--nal_hlite MACH_NAL_HLITE NAL_HLITE 1666
--htcvogue MACH_HTCVOGUE HTCVOGUE 1667
--smartweb MACH_SMARTWEB SMARTWEB 1668
--mv86xx MACH_MV86XX MV86XX 1669
--mv87xx MACH_MV87XX MV87XX 1670
--songyoungho MACH_SONGYOUNGHO SONGYOUNGHO 1671
--younghotema MACH_YOUNGHOTEMA YOUNGHOTEMA 1672
--pcm037 MACH_PCM037 PCM037 1673
--mmvp MACH_MMVP MMVP 1674
--mmap MACH_MMAP MMAP 1675
--ptid2410 MACH_PTID2410 PTID2410 1676
--james_926 MACH_JAMES_926 JAMES_926 1677
--fm6000 MACH_FM6000 FM6000 1678
--db88f6281_bp MACH_DB88F6281_BP DB88F6281_BP 1680
--rd88f6192_nas MACH_RD88F6192_NAS RD88F6192_NAS 1681
--rd88f6281 MACH_RD88F6281 RD88F6281 1682
--db78x00_bp MACH_DB78X00_BP DB78X00_BP 1683
--smdk2416 MACH_SMDK2416 SMDK2416 1685
--oce_spider_si MACH_OCE_SPIDER_SI OCE_SPIDER_SI 1686
--oce_spider_sk MACH_OCE_SPIDER_SK OCE_SPIDER_SK 1687
--rovern6 MACH_ROVERN6 ROVERN6 1688
--pelco_evolution MACH_PELCO_EVOLUTION PELCO_EVOLUTION 1689
--wbd111 MACH_WBD111 WBD111 1690
--elaracpe MACH_ELARACPE ELARACPE 1691
--mabv3 MACH_MABV3 MABV3 1692
--mv2120 MACH_MV2120 MV2120 1693
--csb737 MACH_CSB737 CSB737 1695
--mx51_3ds MACH_MX51_3DS MX51_3DS 1696
--g900 MACH_G900 G900 1697
--apf27 MACH_APF27 APF27 1698
--ggus2000 MACH_GGUS2000 GGUS2000 1699
--omap_2430_mimic MACH_OMAP_2430_MIMIC OMAP_2430_MIMIC 1700
--imx27lite MACH_IMX27LITE IMX27LITE 1701
--almex MACH_ALMEX ALMEX 1702
--control MACH_CONTROL CONTROL 1703
--mba2410 MACH_MBA2410 MBA2410 1704
--volcano MACH_VOLCANO VOLCANO 1705
--zenith MACH_ZENITH ZENITH 1706
--muchip MACH_MUCHIP MUCHIP 1707
--magellan MACH_MAGELLAN MAGELLAN 1708
--usb_a9260 MACH_USB_A9260 USB_A9260 1709
--usb_a9263 MACH_USB_A9263 USB_A9263 1710
--qil_a9260 MACH_QIL_A9260 QIL_A9260 1711
--cme9210 MACH_CME9210 CME9210 1712
--hczh4 MACH_HCZH4 HCZH4 1713
--spearbasic MACH_SPEARBASIC SPEARBASIC 1714
--dep2440 MACH_DEP2440 DEP2440 1715
--hdl_gxr MACH_HDL_GXR HDL_GXR 1716
--hdl_gt MACH_HDL_GT HDL_GT 1717
--hdl_4g MACH_HDL_4G HDL_4G 1718
--s3c6000 MACH_S3C6000 S3C6000 1719
--mmsp2_mdk MACH_MMSP2_MDK MMSP2_MDK 1720
--mpx220 MACH_MPX220 MPX220 1721
--kzm_arm11_01 MACH_KZM_ARM11_01 KZM_ARM11_01 1722
--htc_polaris MACH_HTC_POLARIS HTC_POLARIS 1723
--htc_kaiser MACH_HTC_KAISER HTC_KAISER 1724
--lg_ks20 MACH_LG_KS20 LG_KS20 1725
--hhgps MACH_HHGPS HHGPS 1726
--nokia_n810_wimax MACH_NOKIA_N810_WIMAX NOKIA_N810_WIMAX 1727
--insight MACH_INSIGHT INSIGHT 1728
--sapphire MACH_SAPPHIRE SAPPHIRE 1729
--csb637xo MACH_CSB637XO CSB637XO 1730
--evisiong MACH_EVISIONG EVISIONG 1731
--stmp37xx MACH_STMP37XX STMP37XX 1732
--stmp378x MACH_STMP378X STMP378X 1733
--tnt MACH_TNT TNT 1734
--tbxt MACH_TBXT TBXT 1735
--playmate MACH_PLAYMATE PLAYMATE 1736
--pns10 MACH_PNS10 PNS10 1737
--eznavi MACH_EZNAVI EZNAVI 1738
--ps4000 MACH_PS4000 PS4000 1739
--ezx_a780 MACH_EZX_A780 EZX_A780 1740
--ezx_e680 MACH_EZX_E680 EZX_E680 1741
--ezx_a1200 MACH_EZX_A1200 EZX_A1200 1742
--ezx_e6 MACH_EZX_E6 EZX_E6 1743
--ezx_e2 MACH_EZX_E2 EZX_E2 1744
--ezx_a910 MACH_EZX_A910 EZX_A910 1745
--cwmx31 MACH_CWMX31 CWMX31 1746
--sl2312 MACH_SL2312 SL2312 1747
--blenny MACH_BLENNY BLENNY 1748
--ds107 MACH_DS107 DS107 1749
--dsx07 MACH_DSX07 DSX07 1750
--picocom1 MACH_PICOCOM1 PICOCOM1 1751
--lynx_wolverine MACH_LYNX_WOLVERINE LYNX_WOLVERINE 1752
--ubisys_p9_sc19 MACH_UBISYS_P9_SC19 UBISYS_P9_SC19 1753
--kratos_low MACH_KRATOS_LOW KRATOS_LOW 1754
--m700 MACH_M700 M700 1755
--edmini_v2 MACH_EDMINI_V2 EDMINI_V2 1756
--zipit2 MACH_ZIPIT2 ZIPIT2 1757
--hslfemtocell MACH_HSLFEMTOCELL HSLFEMTOCELL 1758
--daintree_at91 MACH_DAINTREE_AT91 DAINTREE_AT91 1759
--sg560usb MACH_SG560USB SG560USB 1760
--omap3_pandora MACH_OMAP3_PANDORA OMAP3_PANDORA 1761
--usr8200 MACH_USR8200 USR8200 1762
--s1s65k MACH_S1S65K S1S65K 1763
--s2s65a MACH_S2S65A S2S65A 1764
--icore MACH_ICORE ICORE 1765
--mss2 MACH_MSS2 MSS2 1766
--belmont MACH_BELMONT BELMONT 1767
--asusp525 MACH_ASUSP525 ASUSP525 1768
--lb88rc8480 MACH_LB88RC8480 LB88RC8480 1769
--hipxa MACH_HIPXA HIPXA 1770
--mx25_3ds MACH_MX25_3DS MX25_3DS 1771
--m800 MACH_M800 M800 1772
--omap3530_lv_som MACH_OMAP3530_LV_SOM OMAP3530_LV_SOM 1773
--prima_evb MACH_PRIMA_EVB PRIMA_EVB 1774
--mx31bt1 MACH_MX31BT1 MX31BT1 1775
--atlas4_evb MACH_ATLAS4_EVB ATLAS4_EVB 1776
--mx31cicada MACH_MX31CICADA MX31CICADA 1777
--mi424wr MACH_MI424WR MI424WR 1778
--axs_ultrax MACH_AXS_ULTRAX AXS_ULTRAX 1779
--at572d940deb MACH_AT572D940DEB AT572D940DEB 1780
--davinci_da8xx_evm MACH_DAVINCI_DA8XX_EVM DAVINCI_DA8XX_EVM 1781
--ep9302 MACH_EP9302 EP9302 1782
--at572d940hfek MACH_AT572D940HFEB AT572D940HFEB 1783
--cybook3 MACH_CYBOOK3 CYBOOK3 1784
--wdg002 MACH_WDG002 WDG002 1785
--sg560adsl MACH_SG560ADSL SG560ADSL 1786
--nextio_n2800_ica MACH_NEXTIO_N2800_ICA NEXTIO_N2800_ICA 1787
--marvell_newdb MACH_MARVELL_NEWDB MARVELL_NEWDB 1789
--vandihud MACH_VANDIHUD VANDIHUD 1790
--magx_e8 MACH_MAGX_E8 MAGX_E8 1791
--magx_z6 MACH_MAGX_Z6 MAGX_Z6 1792
--magx_v8 MACH_MAGX_V8 MAGX_V8 1793
--magx_u9 MACH_MAGX_U9 MAGX_U9 1794
--toughcf08 MACH_TOUGHCF08 TOUGHCF08 1795
--zw4400 MACH_ZW4400 ZW4400 1796
--marat91 MACH_MARAT91 MARAT91 1797
--overo MACH_OVERO OVERO 1798
--at2440evb MACH_AT2440EVB AT2440EVB 1799
--neocore926 MACH_NEOCORE926 NEOCORE926 1800
--wnr854t MACH_WNR854T WNR854T 1801
--imx27 MACH_IMX27 IMX27 1802
--moose_db MACH_MOOSE_DB MOOSE_DB 1803
--fab4 MACH_FAB4 FAB4 1804
--htcdiamond MACH_HTCDIAMOND HTCDIAMOND 1805
--fiona MACH_FIONA FIONA 1806
--mxc30030_x MACH_MXC30030_X MXC30030_X 1807
--bmp1000 MACH_BMP1000 BMP1000 1808
--logi9200 MACH_LOGI9200 LOGI9200 1809
--tqma31 MACH_TQMA31 TQMA31 1810
--ccw9p9215js MACH_CCW9P9215JS CCW9P9215JS 1811
--rd88f5181l_ge MACH_RD88F5181L_GE RD88F5181L_GE 1812
--sifmain MACH_SIFMAIN SIFMAIN 1813
--sam9_l9261 MACH_SAM9_L9261 SAM9_L9261 1814
--cc9m2443js MACH_CC9M2443JS CC9M2443JS 1815
--xaria300 MACH_XARIA300 XARIA300 1816
--it9200 MACH_IT9200 IT9200 1817
--rd88f5181l_fxo MACH_RD88F5181L_FXO RD88F5181L_FXO 1818
--kriss_sensor MACH_KRISS_SENSOR KRISS_SENSOR 1819
--pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820
--jade MACH_JADE JADE 1821
--ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
--gprisc3 MACH_GPRISC3 GPRISC3 1823
--stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
--smdk6430 MACH_SMDK6430 SMDK6430 1825
--smdkc100 MACH_SMDKC100 SMDKC100 1826
--tavorevb MACH_TAVOREVB TAVOREVB 1827
--saar MACH_SAAR SAAR 1828
--deister_eyecam MACH_DEISTER_EYECAM DEISTER_EYECAM 1829
--at91sam9m10g45ek MACH_AT91SAM9M10G45EK AT91SAM9M10G45EK 1830
--linkstation_produo MACH_LINKSTATION_PRODUO LINKSTATION_PRODUO 1831
--hit_b0 MACH_HIT_B0 HIT_B0 1832
--adx_rmu MACH_ADX_RMU ADX_RMU 1833
--xg_cpe_main MACH_XG_CPE_MAIN XG_CPE_MAIN 1834
--edb9407a MACH_EDB9407A EDB9407A 1835
--dtb9608 MACH_DTB9608 DTB9608 1836
--em104v1 MACH_EM104V1 EM104V1 1837
--demo MACH_DEMO DEMO 1838
--logi9260 MACH_LOGI9260 LOGI9260 1839
--mx31_exm32 MACH_MX31_EXM32 MX31_EXM32 1840
--usb_a9g20 MACH_USB_A9G20 USB_A9G20 1841
--picproje2008 MACH_PICPROJE2008 PICPROJE2008 1842
--cs_e9315 MACH_CS_E9315 CS_E9315 1843
--qil_a9g20 MACH_QIL_A9G20 QIL_A9G20 1844
--sha_pon020 MACH_SHA_PON020 SHA_PON020 1845
--nad MACH_NAD NAD 1846
--sbc35_a9260 MACH_SBC35_A9260 SBC35_A9260 1847
--sbc35_a9g20 MACH_SBC35_A9G20 SBC35_A9G20 1848
--davinci_beginning MACH_DAVINCI_BEGINNING DAVINCI_BEGINNING 1849
--uwc MACH_UWC UWC 1850
--mxlads MACH_MXLADS MXLADS 1851
--htcnike MACH_HTCNIKE HTCNIKE 1852
--deister_pxa270 MACH_DEISTER_PXA270 DEISTER_PXA270 1853
--cme9210js MACH_CME9210JS CME9210JS 1854
--cc9p9360 MACH_CC9P9360 CC9P9360 1855
--mocha MACH_MOCHA MOCHA 1856
--wapd170ag MACH_WAPD170AG WAPD170AG 1857
--linkstation_mini MACH_LINKSTATION_MINI LINKSTATION_MINI 1858
--afeb9260 MACH_AFEB9260 AFEB9260 1859
--w90x900 MACH_W90X900 W90X900 1860
--w90x700 MACH_W90X700 W90X700 1861
--kt300ip MACH_KT300IP KT300IP 1862
--kt300ip_g20 MACH_KT300IP_G20 KT300IP_G20 1863
--srcm MACH_SRCM SRCM 1864
--wlnx_9260 MACH_WLNX_9260 WLNX_9260 1865
--openmoko_gta03 MACH_OPENMOKO_GTA03 OPENMOKO_GTA03 1866
--osprey2 MACH_OSPREY2 OSPREY2 1867
--kbio9260 MACH_KBIO9260 KBIO9260 1868
--ginza MACH_GINZA GINZA 1869
--a636n MACH_A636N A636N 1870
--imx27ipcam MACH_IMX27IPCAM IMX27IPCAM 1871
--nemoc MACH_NEMOC NEMOC 1872
--geneva MACH_GENEVA GENEVA 1873
--htcpharos MACH_HTCPHAROS HTCPHAROS 1874
--neonc MACH_NEONC NEONC 1875
--nas7100 MACH_NAS7100 NAS7100 1876
--teuphone MACH_TEUPHONE TEUPHONE 1877
--annax_eth2 MACH_ANNAX_ETH2 ANNAX_ETH2 1878
--csb733 MACH_CSB733 CSB733 1879
--bk3 MACH_BK3 BK3 1880
--omap_em32 MACH_OMAP_EM32 OMAP_EM32 1881
--et9261cp MACH_ET9261CP ET9261CP 1882
--jasperc MACH_JASPERC JASPERC 1883
--issi_arm9 MACH_ISSI_ARM9 ISSI_ARM9 1884
--ued MACH_UED UED 1885
--esiblade MACH_ESIBLADE ESIBLADE 1886
--eye02 MACH_EYE02 EYE02 1887
--imx27kbd MACH_IMX27KBD IMX27KBD 1888
--sst61vc010_fpga MACH_SST61VC010_FPGA SST61VC010_FPGA 1889
--kixvp435 MACH_KIXVP435 KIXVP435 1890
--kixnp435 MACH_KIXNP435 KIXNP435 1891
--africa MACH_AFRICA AFRICA 1892
--nh233 MACH_NH233 NH233 1893
--rd88f6183ap_ge MACH_RD88F6183AP_GE RD88F6183AP_GE 1894
--bcm4760 MACH_BCM4760 BCM4760 1895
--eddy_v2 MACH_EDDY_V2 EDDY_V2 1896
--realview_pba8 MACH_REALVIEW_PBA8 REALVIEW_PBA8 1897
--hid_a7 MACH_HID_A7 HID_A7 1898
--hero MACH_HERO HERO 1899
--omap_poseidon MACH_OMAP_POSEIDON OMAP_POSEIDON 1900
--realview_pbx MACH_REALVIEW_PBX REALVIEW_PBX 1901
--micro9s MACH_MICRO9S MICRO9S 1902
--mako MACH_MAKO MAKO 1903
--xdaflame MACH_XDAFLAME XDAFLAME 1904
--phidget_sbc2 MACH_PHIDGET_SBC2 PHIDGET_SBC2 1905
--limestone MACH_LIMESTONE LIMESTONE 1906
--iprobe_c32 MACH_IPROBE_C32 IPROBE_C32 1907
--rut100 MACH_RUT100 RUT100 1908
--asusp535 MACH_ASUSP535 ASUSP535 1909
--htcraphael MACH_HTCRAPHAEL HTCRAPHAEL 1910
--sygdg1 MACH_SYGDG1 SYGDG1 1911
--sygdg2 MACH_SYGDG2 SYGDG2 1912
--seoul MACH_SEOUL SEOUL 1913
--salerno MACH_SALERNO SALERNO 1914
--ucn_s3c64xx MACH_UCN_S3C64XX UCN_S3C64XX 1915
--msm7201a MACH_MSM7201A MSM7201A 1916
--lpr1 MACH_LPR1 LPR1 1917
--armadillo500fx MACH_ARMADILLO500FX ARMADILLO500FX 1918
--g3evm MACH_G3EVM G3EVM 1919
--z3_dm355 MACH_Z3_DM355 Z3_DM355 1920
--w90p910evb MACH_W90P910EVB W90P910EVB 1921
--w90p920evb MACH_W90P920EVB W90P920EVB 1922
--w90p950evb MACH_W90P950EVB W90P950EVB 1923
--w90n960evb MACH_W90N960EVB W90N960EVB 1924
--camhd MACH_CAMHD CAMHD 1925
--mvc100 MACH_MVC100 MVC100 1926
--electrum_200 MACH_ELECTRUM_200 ELECTRUM_200 1927
--htcjade MACH_HTCJADE HTCJADE 1928
--memphis MACH_MEMPHIS MEMPHIS 1929
--imx27sbc MACH_IMX27SBC IMX27SBC 1930
--lextar MACH_LEXTAR LEXTAR 1931
--mv88f6281gtw_ge MACH_MV88F6281GTW_GE MV88F6281GTW_GE 1932
--ncp MACH_NCP NCP 1933
--z32an_series MACH_Z32AN Z32AN 1934
--tmq_capd MACH_TMQ_CAPD TMQ_CAPD 1935
--omap3_wl MACH_OMAP3_WL OMAP3_WL 1936
--chumby MACH_CHUMBY CHUMBY 1937
--atsarm9 MACH_ATSARM9 ATSARM9 1938
--davinci_dm365_evm MACH_DAVINCI_DM365_EVM DAVINCI_DM365_EVM 1939
--bahamas MACH_BAHAMAS BAHAMAS 1940
--das MACH_DAS DAS 1941
--minidas MACH_MINIDAS MINIDAS 1942
--vk1000 MACH_VK1000 VK1000 1943
--centro MACH_CENTRO CENTRO 1944
--ctera_2bay MACH_CTERA_2BAY CTERA_2BAY 1945
--edgeconnect MACH_EDGECONNECT EDGECONNECT 1946
--nd27000 MACH_ND27000 ND27000 1947
--cobra MACH_GEMALTO_COBRA GEMALTO_COBRA 1948
--ingelabs_comet MACH_INGELABS_COMET INGELABS_COMET 1949
--pollux_wiz MACH_POLLUX_WIZ POLLUX_WIZ 1950
--blackstone MACH_BLACKSTONE BLACKSTONE 1951
--topaz MACH_TOPAZ TOPAZ 1952
--aixle MACH_AIXLE AIXLE 1953
--mw998 MACH_MW998 MW998 1954
--nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955
--vsc5605ev MACH_VSC5605EV VSC5605EV 1956
--nt98700dk MACH_NT98700DK NT98700DK 1957
--icontact MACH_ICONTACT ICONTACT 1958
--swarco_frcpu MACH_SWARCO_FRCPU SWARCO_FRCPU 1959
--swarco_scpu MACH_SWARCO_SCPU SWARCO_SCPU 1960
--bbox_p16 MACH_BBOX_P16 BBOX_P16 1961
--bstd MACH_BSTD BSTD 1962
--sbc2440ii MACH_SBC2440II SBC2440II 1963
--pcm034 MACH_PCM034 PCM034 1964
--neso MACH_NESO NESO 1965
--wlnx_9g20 MACH_WLNX_9G20 WLNX_9G20 1966
--omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967
--totemnova MACH_TOTEMNOVA TOTEMNOVA 1968
--c5000 MACH_C5000 C5000 1969
--unipo_at91sam9263 MACH_UNIPO_AT91SAM9263 UNIPO_AT91SAM9263 1970
--ethernut5 MACH_ETHERNUT5 ETHERNUT5 1971
--arm11 MACH_ARM11 ARM11 1972
--cpuat9260 MACH_CPUAT9260 CPUAT9260 1973
--cpupxa255 MACH_CPUPXA255 CPUPXA255 1974
--cpuimx27 MACH_CPUIMX27 CPUIMX27 1975
--cheflux MACH_CHEFLUX CHEFLUX 1976
--eb_cpux9k2 MACH_EB_CPUX9K2 EB_CPUX9K2 1977
--opcotec MACH_OPCOTEC OPCOTEC 1978
--yt MACH_YT YT 1979
--motoq MACH_MOTOQ MOTOQ 1980
--bsb1 MACH_BSB1 BSB1 1981
--acs5k MACH_ACS5K ACS5K 1982
--milan MACH_MILAN MILAN 1983
--quartzv2 MACH_QUARTZV2 QUARTZV2 1984
--rsvp MACH_RSVP RSVP 1985
--rmp200 MACH_RMP200 RMP200 1986
--snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987
--dsm320 MACH_DSM320 DSM320 1988
--adsgcm MACH_ADSGCM ADSGCM 1989
--ase2_400 MACH_ASE2_400 ASE2_400 1990
--pizza MACH_PIZZA PIZZA 1991
--spot_ngpl MACH_SPOT_NGPL SPOT_NGPL 1992
--armata MACH_ARMATA ARMATA 1993
--exeda MACH_EXEDA EXEDA 1994
--mx31sf005 MACH_MX31SF005 MX31SF005 1995
--f5d8231_4_v2 MACH_F5D8231_4_V2 F5D8231_4_V2 1996
--q2440 MACH_Q2440 Q2440 1997
--qq2440 MACH_QQ2440 QQ2440 1998
--mini2440 MACH_MINI2440 MINI2440 1999
--colibri300 MACH_COLIBRI300 COLIBRI300 2000
--jades MACH_JADES JADES 2001
--spark MACH_SPARK SPARK 2002
--benzina MACH_BENZINA BENZINA 2003
--blaze MACH_BLAZE BLAZE 2004
--linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
--htckovsky MACH_HTCVENUS HTCVENUS 2006
--sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
--hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
--sapphira MACH_SAPPHIRA SAPPHIRA 2009
--dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
--armbox MACH_ARMBOX ARMBOX 2011
--harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
--ribaldo MACH_RIBALDO RIBALDO 2013
--agora MACH_AGORA AGORA 2014
--omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
--a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
--usg2410 MACH_USG2410 USG2410 2017
--pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
--mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
--topas910 MACH_TOPAS910 TOPAS910 2020
--hyena MACH_HYENA HYENA 2021
--pospax MACH_POSPAX POSPAX 2022
--hdl_gx MACH_HDL_GX HDL_GX 2023
--ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
--ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
--crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
--egauge2 MACH_EGAUGE2 EGAUGE2 2027
--didj MACH_DIDJ DIDJ 2028
--m_s3c2443 MACH_MEISTER MEISTER 2029
--htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
--cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
--smdk6440 MACH_SMDK6440 SMDK6440 2032
--omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
--ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
--pvg610_100 MACH_PVG610 PVG610 2035
--hprw6815 MACH_HPRW6815 HPRW6815 2036
--omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
--nas4220b MACH_NAS4220B NAS4220B 2038
--htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
--htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
--scaler MACH_SCALER SCALER 2041
--zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
--aspenite MACH_ASPENITE ASPENITE 2043
--teton MACH_TETON TETON 2044
--ttc_dkb MACH_TTC_DKB TTC_DKB 2045
--bishop2 MACH_BISHOP2 BISHOP2 2046
--ippv5 MACH_IPPV5 IPPV5 2047
--farm926 MACH_FARM926 FARM926 2048
--mmccpu MACH_MMCCPU MMCCPU 2049
--sgmsfl MACH_SGMSFL SGMSFL 2050
--tt8000 MACH_TT8000 TT8000 2051
--zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
--mptc MACH_MPTC MPTC 2053
--h6051 MACH_H6051 H6051 2054
--pvg610_101 MACH_PVG610_101 PVG610_101 2055
--stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
--pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
--tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
--tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
--aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
--dx900 MACH_DX900 DX900 2061
--cpodc2 MACH_CPODC2 CPODC2 2062
--tilt_8925 MACH_TILT_8925 TILT_8925 2063
--davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
--swordfish MACH_SWORDFISH SWORDFISH 2065
--corvus MACH_CORVUS CORVUS 2066
--taurus MACH_TAURUS TAURUS 2067
--axm MACH_AXM AXM 2068
--axc MACH_AXC AXC 2069
--baby MACH_BABY BABY 2070
--mp200 MACH_MP200 MP200 2071
--pcm043 MACH_PCM043 PCM043 2072
--hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
--kbk9g20 MACH_KBK9G20 KBK9G20 2074
--adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
--avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
--suc82x MACH_SUC SUC 2077
--at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
--mendoza MACH_MENDOZA MENDOZA 2079
--kira MACH_KIRA KIRA 2080
--mx1hbm MACH_MX1HBM MX1HBM 2081
--quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
--quatro4230 MACH_QUATRO4230 QUATRO4230 2083
--nsb400 MACH_NSB400 NSB400 2084
--drp255 MACH_DRP255 DRP255 2085
--thoth MACH_THOTH THOTH 2086
--firestone MACH_FIRESTONE FIRESTONE 2087
--asusp750 MACH_ASUSP750 ASUSP750 2088
--ctera_dl MACH_CTERA_DL CTERA_DL 2089
--socr MACH_SOCR SOCR 2090
--htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
--heroc MACH_HEROC HEROC 2092
--zeno6800 MACH_ZENO6800 ZENO6800 2093
--sc2mcs MACH_SC2MCS SC2MCS 2094
--gene100 MACH_GENE100 GENE100 2095
--as353x MACH_AS353X AS353X 2096
--sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
--at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
--mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
--cc9200 MACH_CC9200 CC9200 2100
--sm9200 MACH_SM9200 SM9200 2101
--tp9200 MACH_TP9200 TP9200 2102
--snapperdv MACH_SNAPPERDV SNAPPERDV 2103
--avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
--avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
--omap3axon MACH_OMAP3AXON OMAP3AXON 2106
--ma8xx MACH_MA8XX MA8XX 2107
--mp201ek MACH_MP201EK MP201EK 2108
--davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
--mpa1600 MACH_MPA1600 MPA1600 2110
--pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
--nsb667 MACH_NSB667 NSB667 2112
--rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
--twocom MACH_TWOCOM TWOCOM 2114
--ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
--hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
--afeusb MACH_AFEUSB AFEUSB 2117
--t830 MACH_T830 T830 2118
--spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
--om_3d7k MACH_OM_3D7K OM_3D7K 2120
--picocom2 MACH_PICOCOM2 PICOCOM2 2121
--uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
--uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
--cherry MACH_CHERRY CHERRY 2124
--mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
--s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
--tx37 MACH_TX37 TX37 2127
--sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
--benzglb MACH_BENZGLB BENZGLB 2129
--benztd MACH_BENZTD BENZTD 2130
--cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
--solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
--mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
--fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
--rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
--smallogger MACH_SMALLOGGER SMALLOGGER 2136
--ccw9p9215 MACH_CCW9P9215 CCW9P9215 2137
--dm355_leopard MACH_DM355_LEOPARD DM355_LEOPARD 2138
--ts219 MACH_TS219 TS219 2139
--tny_a9263 MACH_TNY_A9263 TNY_A9263 2140
--apollo MACH_APOLLO APOLLO 2141
--at91cap9stk MACH_AT91CAP9STK AT91CAP9STK 2142
--spc300 MACH_SPC300 SPC300 2143
--eko MACH_EKO EKO 2144
--ccw9m2443 MACH_CCW9M2443 CCW9M2443 2145
--ccw9m2443js MACH_CCW9M2443JS CCW9M2443JS 2146
--m2m_router_device MACH_M2M_ROUTER_DEVICE M2M_ROUTER_DEVICE 2147
--str9104nas MACH_STAR9104NAS STAR9104NAS 2148
--pca100 MACH_PCA100 PCA100 2149
--z3_dm365_mod_01 MACH_Z3_DM365_MOD_01 Z3_DM365_MOD_01 2150
--hipox MACH_HIPOX HIPOX 2151
--omap3_piteds MACH_OMAP3_PITEDS OMAP3_PITEDS 2152
--bm150r MACH_BM150R BM150R 2153
--tbone MACH_TBONE TBONE 2154
--merlin MACH_MERLIN MERLIN 2155
--falcon MACH_FALCON FALCON 2156
--davinci_da850_evm MACH_DAVINCI_DA850_EVM DAVINCI_DA850_EVM 2157
--s5p6440 MACH_S5P6440 S5P6440 2158
--at91sam9g10ek MACH_AT91SAM9G10EK AT91SAM9G10EK 2159
--omap_4430sdp MACH_OMAP_4430SDP OMAP_4430SDP 2160
--lpc313x MACH_LPC313X LPC313X 2161
--magx_zn5 MACH_MAGX_ZN5 MAGX_ZN5 2162
--magx_em30 MACH_MAGX_EM30 MAGX_EM30 2163
--magx_ve66 MACH_MAGX_VE66 MAGX_VE66 2164
--meesc MACH_MEESC MEESC 2165
--otc570 MACH_OTC570 OTC570 2166
--bcu2412 MACH_BCU2412 BCU2412 2167
--beacon MACH_BEACON BEACON 2168
--actia_tgw MACH_ACTIA_TGW ACTIA_TGW 2169
--e4430 MACH_E4430 E4430 2170
--ql300 MACH_QL300 QL300 2171
--btmavb101 MACH_BTMAVB101 BTMAVB101 2172
--btmawb101 MACH_BTMAWB101 BTMAWB101 2173
--sq201 MACH_SQ201 SQ201 2174
--quatro45xx MACH_QUATRO45XX QUATRO45XX 2175
--openpad MACH_OPENPAD OPENPAD 2176
--tx25 MACH_TX25 TX25 2177
--omap3_torpedo MACH_OMAP3_TORPEDO OMAP3_TORPEDO 2178
--htcraphael_k MACH_HTCRAPHAEL_K HTCRAPHAEL_K 2179
--lal43 MACH_LAL43 LAL43 2181
--htcraphael_cdma500 MACH_HTCRAPHAEL_CDMA500 HTCRAPHAEL_CDMA500 2182
--anw6410 MACH_ANW6410 ANW6410 2183
--htcprophet MACH_HTCPROPHET HTCPROPHET 2185
--cfa_10022 MACH_CFA_10022 CFA_10022 2186
--imx27_visstrim_m10 MACH_IMX27_VISSTRIM_M10 IMX27_VISSTRIM_M10 2187
--px2imx27 MACH_PX2IMX27 PX2IMX27 2188
--stm3210e_eval MACH_STM3210E_EVAL STM3210E_EVAL 2189
--dvs10 MACH_DVS10 DVS10 2190
--portuxg20 MACH_PORTUXG20 PORTUXG20 2191
--arm_spv MACH_ARM_SPV ARM_SPV 2192
--smdkc110 MACH_SMDKC110 SMDKC110 2193
--cabespresso MACH_CABESPRESSO CABESPRESSO 2194
--hmc800 MACH_HMC800 HMC800 2195
--sholes MACH_SHOLES SHOLES 2196
--btmxc31 MACH_BTMXC31 BTMXC31 2197
--dt501 MACH_DT501 DT501 2198
--ktx MACH_KTX KTX 2199
--omap3517evm MACH_OMAP3517EVM OMAP3517EVM 2200
--netspace_v2 MACH_NETSPACE_V2 NETSPACE_V2 2201
--netspace_max_v2 MACH_NETSPACE_MAX_V2 NETSPACE_MAX_V2 2202
--d2net_v2 MACH_D2NET_V2 D2NET_V2 2203
--net2big_v2 MACH_NET2BIG_V2 NET2BIG_V2 2204
--net4big_v2 MACH_NET4BIG_V2 NET4BIG_V2 2205
--net5big_v2 MACH_NET5BIG_V2 NET5BIG_V2 2206
--endb2443 MACH_ENDB2443 ENDB2443 2207
--inetspace_v2 MACH_INETSPACE_V2 INETSPACE_V2 2208
--tros MACH_TROS TROS 2209
--pelco_homer MACH_PELCO_HOMER PELCO_HOMER 2210
--ofsp8 MACH_OFSP8 OFSP8 2211
--at91sam9g45ekes MACH_AT91SAM9G45EKES AT91SAM9G45EKES 2212
--guf_cupid MACH_GUF_CUPID GUF_CUPID 2213
--eab1r MACH_EAB1R EAB1R 2214
--desirec MACH_DESIREC DESIREC 2215
--cordoba MACH_CORDOBA CORDOBA 2216
--irvine MACH_IRVINE IRVINE 2217
--sff772 MACH_SFF772 SFF772 2218
--pelco_milano MACH_PELCO_MILANO PELCO_MILANO 2219
--pc7302 MACH_PC7302 PC7302 2220
--bip6000 MACH_BIP6000 BIP6000 2221
--silvermoon MACH_SILVERMOON SILVERMOON 2222
--vc0830 MACH_VC0830 VC0830 2223
--dt430 MACH_DT430 DT430 2224
--ji42pf MACH_JI42PF JI42PF 2225
--gnet_ksm MACH_GNET_KSM GNET_KSM 2226
--gnet_sgm MACH_GNET_SGM GNET_SGM 2227
--gnet_sgr MACH_GNET_SGR GNET_SGR 2228
--omap3_icetekevm MACH_OMAP3_ICETEKEVM OMAP3_ICETEKEVM 2229
--pnp MACH_PNP PNP 2230
--ctera_2bay_k MACH_CTERA_2BAY_K CTERA_2BAY_K 2231
--ctera_2bay_u MACH_CTERA_2BAY_U CTERA_2BAY_U 2232
--sas_c MACH_SAS_C SAS_C 2233
--vma2315 MACH_VMA2315 VMA2315 2234
--vcs MACH_VCS VCS 2235
--spear600 MACH_SPEAR600 SPEAR600 2236
--spear300 MACH_SPEAR300 SPEAR300 2237
--spear1300 MACH_SPEAR1300 SPEAR1300 2238
--lilly1131 MACH_LILLY1131 LILLY1131 2239
--arvoo_ax301 MACH_ARVOO_AX301 ARVOO_AX301 2240
--mapphone MACH_MAPPHONE MAPPHONE 2241
--legend MACH_LEGEND LEGEND 2242
--salsa MACH_SALSA SALSA 2243
--lounge MACH_LOUNGE LOUNGE 2244
--vision MACH_VISION VISION 2245
--vmb20 MACH_VMB20 VMB20 2246
--hy2410 MACH_HY2410 HY2410 2247
--hy9315 MACH_HY9315 HY9315 2248
--bullwinkle MACH_BULLWINKLE BULLWINKLE 2249
--arm_ultimator2 MACH_ARM_ULTIMATOR2 ARM_ULTIMATOR2 2250
--vs_v210 MACH_VS_V210 VS_V210 2252
--vs_v212 MACH_VS_V212 VS_V212 2253
--hmt MACH_HMT HMT 2254
--suen3 MACH_SUEN3 SUEN3 2255
--vesper MACH_VESPER VESPER 2256
--str9 MACH_STR9 STR9 2257
--omap3_wl_ff MACH_OMAP3_WL_FF OMAP3_WL_FF 2258
--simcom MACH_SIMCOM SIMCOM 2259
--mcwebio MACH_MCWEBIO MCWEBIO 2260
--at91sam9g20ek_2mmc MACH_AT91SAM9G20EK_2MMC AT91SAM9G20EK_2MMC 2288
-+ebsa110 ARCH_EBSA110 EBSA110 0
-+riscpc ARCH_RPC RISCPC 1
-+nexuspci ARCH_NEXUSPCI NEXUSPCI 3
-+ebsa285 ARCH_EBSA285 EBSA285 4
-+netwinder ARCH_NETWINDER NETWINDER 5
-+cats ARCH_CATS CATS 6
-+tbox ARCH_TBOX TBOX 7
-+co285 ARCH_CO285 CO285 8
-+clps7110 ARCH_CLPS7110 CLPS7110 9
-+archimedes ARCH_ARC ARCHIMEDES 10
-+a5k ARCH_A5K A5K 11
-+etoile ARCH_ETOILE ETOILE 12
-+lacie_nas ARCH_LACIE_NAS LACIE_NAS 13
-+clps7500 ARCH_CLPS7500 CLPS7500 14
-+shark ARCH_SHARK SHARK 15
-+brutus SA1100_BRUTUS BRUTUS 16
-+personal_server ARCH_PERSONAL_SERVER PERSONAL_SERVER 17
-+itsy SA1100_ITSY ITSY 18
-+l7200 ARCH_L7200 L7200 19
-+pleb SA1100_PLEB PLEB 20
-+integrator ARCH_INTEGRATOR INTEGRATOR 21
-+h3600 SA1100_H3600 H3600 22
-+ixp1200 ARCH_IXP1200 IXP1200 23
-+p720t ARCH_P720T P720T 24
-+assabet SA1100_ASSABET ASSABET 25
-+victor SA1100_VICTOR VICTOR 26
-+lart SA1100_LART LART 27
-+ranger SA1100_RANGER RANGER 28
-+graphicsclient SA1100_GRAPHICSCLIENT GRAPHICSCLIENT 29
-+xp860 SA1100_XP860 XP860 30
-+cerf SA1100_CERF CERF 31
-+nanoengine SA1100_NANOENGINE NANOENGINE 32
-+fpic SA1100_FPIC FPIC 33
-+extenex1 SA1100_EXTENEX1 EXTENEX1 34
-+sherman SA1100_SHERMAN SHERMAN 35
-+accelent_sa SA1100_ACCELENT ACCELENT_SA 36
-+accelent_l7200 ARCH_L7200_ACCELENT ACCELENT_L7200 37
-+netport SA1100_NETPORT NETPORT 38
-+pangolin SA1100_PANGOLIN PANGOLIN 39
-+yopy SA1100_YOPY YOPY 40
-+coolidge SA1100_COOLIDGE COOLIDGE 41
-+huw_webpanel SA1100_HUW_WEBPANEL HUW_WEBPANEL 42
-+spotme ARCH_SPOTME SPOTME 43
-+freebird ARCH_FREEBIRD FREEBIRD 44
-+ti925 ARCH_TI925 TI925 45
-+riscstation ARCH_RISCSTATION RISCSTATION 46
-+cavy SA1100_CAVY CAVY 47
-+jornada720 SA1100_JORNADA720 JORNADA720 48
-+omnimeter SA1100_OMNIMETER OMNIMETER 49
-+edb7211 ARCH_EDB7211 EDB7211 50
-+citygo SA1100_CITYGO CITYGO 51
-+pfs168 SA1100_PFS168 PFS168 52
-+spot SA1100_SPOT SPOT 53
-+flexanet SA1100_FLEXANET FLEXANET 54
-+webpal ARCH_WEBPAL WEBPAL 55
-+linpda SA1100_LINPDA LINPDA 56
-+anakin ARCH_ANAKIN ANAKIN 57
-+mvi SA1100_MVI MVI 58
-+jupiter SA1100_JUPITER JUPITER 59
-+psionw ARCH_PSIONW PSIONW 60
-+aln SA1100_ALN ALN 61
-+epxa ARCH_CAMELOT CAMELOT 62
-+gds2200 SA1100_GDS2200 GDS2200 63
-+netbook SA1100_PSION_SERIES7 PSION_SERIES7 64
-+xfile SA1100_XFILE XFILE 65
-+accelent_ep9312 ARCH_ACCELENT_EP9312 ACCELENT_EP9312 66
-+ic200 ARCH_IC200 IC200 67
-+creditlart SA1100_CREDITLART CREDITLART 68
-+htm SA1100_HTM HTM 69
-+iq80310 ARCH_IQ80310 IQ80310 70
-+freebot SA1100_FREEBOT FREEBOT 71
-+entel ARCH_ENTEL ENTEL 72
-+enp3510 ARCH_ENP3510 ENP3510 73
-+trizeps SA1100_TRIZEPS TRIZEPS 74
-+nesa SA1100_NESA NESA 75
-+venus ARCH_VENUS VENUS 76
-+tardis ARCH_TARDIS TARDIS 77
-+mercury ARCH_MERCURY MERCURY 78
-+empeg SA1100_EMPEG EMPEG 79
-+adi_evb ARCH_I80200FCC I80200FCC 80
-+itt_cpb SA1100_ITT_CPB ITT_CPB 81
-+svc SA1100_SVC SVC 82
-+alpha2 SA1100_ALPHA2 ALPHA2 84
-+alpha1 SA1100_ALPHA1 ALPHA1 85
-+netarm ARCH_NETARM NETARM 86
-+simpad SA1100_SIMPAD SIMPAD 87
-+pda1 ARCH_PDA1 PDA1 88
-+lubbock ARCH_LUBBOCK LUBBOCK 89
-+aniko ARCH_ANIKO ANIKO 90
-+clep7212 ARCH_CLEP7212 CLEP7212 91
-+cs89712 ARCH_CS89712 CS89712 92
-+weararm SA1100_WEARARM WEARARM 93
-+possio_px SA1100_POSSIO_PX POSSIO_PX 94
-+sidearm SA1100_SIDEARM SIDEARM 95
-+stork SA1100_STORK STORK 96
-+shannon SA1100_SHANNON SHANNON 97
-+ace ARCH_ACE ACE 98
-+ballyarm SA1100_BALLYARM BALLYARM 99
-+simputer SA1100_SIMPUTER SIMPUTER 100
-+nexterm SA1100_NEXTERM NEXTERM 101
-+sa1100_elf SA1100_SA1100_ELF SA1100_ELF 102
-+gator SA1100_GATOR GATOR 103
-+granite ARCH_GRANITE GRANITE 104
-+consus SA1100_CONSUS CONSUS 105
-+aaed2000 ARCH_AAED2000 AAED2000 106
-+cdb89712 ARCH_CDB89712 CDB89712 107
-+graphicsmaster SA1100_GRAPHICSMASTER GRAPHICSMASTER 108
-+adsbitsy SA1100_ADSBITSY ADSBITSY 109
-+pxa_idp ARCH_PXA_IDP PXA_IDP 110
-+plce ARCH_PLCE PLCE 111
-+pt_system3 SA1100_PT_SYSTEM3 PT_SYSTEM3 112
-+murphy ARCH_MEDALB MEDALB 113
-+eagle ARCH_EAGLE EAGLE 114
-+dsc21 ARCH_DSC21 DSC21 115
-+dsc24 ARCH_DSC24 DSC24 116
-+ti5472 ARCH_TI5472 TI5472 117
-+autcpu12 ARCH_AUTCPU12 AUTCPU12 118
-+uengine ARCH_UENGINE UENGINE 119
-+bluestem SA1100_BLUESTEM BLUESTEM 120
-+xingu8 ARCH_XINGU8 XINGU8 121
-+bushstb ARCH_BUSHSTB BUSHSTB 122
-+epsilon1 SA1100_EPSILON1 EPSILON1 123
-+balloon SA1100_BALLOON BALLOON 124
-+puppy ARCH_PUPPY PUPPY 125
-+elroy SA1100_ELROY ELROY 126
-+gms720 ARCH_GMS720 GMS720 127
-+s24x ARCH_S24X S24X 128
-+jtel_clep7312 ARCH_JTEL_CLEP7312 JTEL_CLEP7312 129
-+cx821xx ARCH_CX821XX CX821XX 130
-+edb7312 ARCH_EDB7312 EDB7312 131
-+bsa1110 SA1100_BSA1110 BSA1110 132
-+powerpin ARCH_POWERPIN POWERPIN 133
-+openarm ARCH_OPENARM OPENARM 134
-+whitechapel SA1100_WHITECHAPEL WHITECHAPEL 135
-+h3100 SA1100_H3100 H3100 136
-+h3800 SA1100_H3800 H3800 137
-+blue_v1 ARCH_BLUE_V1 BLUE_V1 138
-+pxa_cerf ARCH_PXA_CERF PXA_CERF 139
-+arm7tevb ARCH_ARM7TEVB ARM7TEVB 140
-+d7400 SA1100_D7400 D7400 141
-+piranha ARCH_PIRANHA PIRANHA 142
-+sbcamelot SA1100_SBCAMELOT SBCAMELOT 143
-+kings SA1100_KINGS KINGS 144
-+smdk2400 ARCH_SMDK2400 SMDK2400 145
-+collie SA1100_COLLIE COLLIE 146
-+idr ARCH_IDR IDR 147
-+badge4 SA1100_BADGE4 BADGE4 148
-+webnet ARCH_WEBNET WEBNET 149
-+d7300 SA1100_D7300 D7300 150
-+cep SA1100_CEP CEP 151
-+fortunet ARCH_FORTUNET FORTUNET 152
-+vc547x ARCH_VC547X VC547X 153
-+filewalker SA1100_FILEWALKER FILEWALKER 154
-+netgateway SA1100_NETGATEWAY NETGATEWAY 155
-+symbol2800 SA1100_SYMBOL2800 SYMBOL2800 156
-+suns SA1100_SUNS SUNS 157
-+frodo SA1100_FRODO FRODO 158
-+ms301 SA1100_MACH_TYTE_MS301 MACH_TYTE_MS301 159
-+mx1ads ARCH_MX1ADS MX1ADS 160
-+h7201 ARCH_H7201 H7201 161
-+h7202 ARCH_H7202 H7202 162
-+amico ARCH_AMICO AMICO 163
-+iam SA1100_IAM IAM 164
-+tt530 SA1100_TT530 TT530 165
-+sam2400 ARCH_SAM2400 SAM2400 166
-+jornada56x SA1100_JORNADA56X JORNADA56X 167
-+active SA1100_ACTIVE ACTIVE 168
-+iq80321 ARCH_IQ80321 IQ80321 169
-+wid SA1100_WID WID 170
-+sabinal ARCH_SABINAL SABINAL 171
-+ixp425_matacumbe ARCH_IXP425_MATACUMBE IXP425_MATACUMBE 172
-+miniprint SA1100_MINIPRINT MINIPRINT 173
-+adm510x ARCH_ADM510X ADM510X 174
-+svs200 SA1100_SVS200 SVS200 175
-+atg_tcu ARCH_ATG_TCU ATG_TCU 176
-+jornada820 SA1100_JORNADA820 JORNADA820 177
-+s3c44b0 ARCH_S3C44B0 S3C44B0 178
-+margis2 ARCH_MARGIS2 MARGIS2 179
-+ks8695 ARCH_KS8695 KS8695 180
-+brh ARCH_BRH BRH 181
-+s3c2410 ARCH_S3C2410 S3C2410 182
-+possio_px30 ARCH_POSSIO_PX30 POSSIO_PX30 183
-+s3c2800 ARCH_S3C2800 S3C2800 184
-+fleetwood SA1100_FLEETWOOD FLEETWOOD 185
-+omaha ARCH_OMAHA OMAHA 186
-+ta7 ARCH_TA7 TA7 187
-+nova SA1100_NOVA NOVA 188
-+hmk ARCH_HMK HMK 189
-+karo ARCH_KARO KARO 190
-+fester SA1100_FESTER FESTER 191
-+gpi ARCH_GPI GPI 192
-+smdk2410 ARCH_SMDK2410 SMDK2410 193
-+i519 ARCH_I519 I519 194
-+nexio SA1100_NEXIO NEXIO 195
-+bitbox SA1100_BITBOX BITBOX 196
-+g200 SA1100_G200 G200 197
-+gill SA1100_GILL GILL 198
-+pxa_mercury ARCH_PXA_MERCURY PXA_MERCURY 199
-+ceiva ARCH_CEIVA CEIVA 200
-+fret SA1100_FRET FRET 201
-+emailphone SA1100_EMAILPHONE EMAILPHONE 202
-+h3900 ARCH_H3900 H3900 203
-+pxa1 ARCH_PXA1 PXA1 204
-+koan369 SA1100_KOAN369 KOAN369 205
-+cogent ARCH_COGENT COGENT 206
-+esl_simputer ARCH_ESL_SIMPUTER ESL_SIMPUTER 207
-+esl_simputer_clr ARCH_ESL_SIMPUTER_CLR ESL_SIMPUTER_CLR 208
-+esl_simputer_bw ARCH_ESL_SIMPUTER_BW ESL_SIMPUTER_BW 209
-+hhp_cradle ARCH_HHP_CRADLE HHP_CRADLE 210
-+he500 ARCH_HE500 HE500 211
-+inhandelf2 SA1100_INHANDELF2 INHANDELF2 212
-+inhandftip SA1100_INHANDFTIP INHANDFTIP 213
-+dnp1110 SA1100_DNP1110 DNP1110 214
-+pnp1110 SA1100_PNP1110 PNP1110 215
-+csb226 ARCH_CSB226 CSB226 216
-+arnold SA1100_ARNOLD ARNOLD 217
-+voiceblue MACH_VOICEBLUE VOICEBLUE 218
-+jz8028 ARCH_JZ8028 JZ8028 219
-+h5400 ARCH_H5400 H5400 220
-+forte SA1100_FORTE FORTE 221
-+acam SA1100_ACAM ACAM 222
-+abox SA1100_ABOX ABOX 223
-+atmel ARCH_ATMEL ATMEL 224
-+sitsang ARCH_SITSANG SITSANG 225
-+cpu1110lcdnet SA1100_CPU1110LCDNET CPU1110LCDNET 226
-+mpl_vcma9 ARCH_MPL_VCMA9 MPL_VCMA9 227
-+opus_a1 ARCH_OPUS_A1 OPUS_A1 228
-+daytona ARCH_DAYTONA DAYTONA 229
-+killbear SA1100_KILLBEAR KILLBEAR 230
-+yoho ARCH_YOHO YOHO 231
-+jasper ARCH_JASPER JASPER 232
-+dsc25 ARCH_DSC25 DSC25 233
-+omap_innovator MACH_OMAP_INNOVATOR OMAP_INNOVATOR 234
-+mnci ARCH_RAMSES RAMSES 235
-+s28x ARCH_S28X S28X 236
-+mport3 ARCH_MPORT3 MPORT3 237
-+pxa_eagle250 ARCH_PXA_EAGLE250 PXA_EAGLE250 238
-+pdb ARCH_PDB PDB 239
-+blue_2g SA1100_BLUE_2G BLUE_2G 240
-+bluearch SA1100_BLUEARCH BLUEARCH 241
-+ixdp2400 ARCH_IXDP2400 IXDP2400 242
-+ixdp2800 ARCH_IXDP2800 IXDP2800 243
-+explorer SA1100_EXPLORER EXPLORER 244
-+ixdp425 ARCH_IXDP425 IXDP425 245
-+chimp ARCH_CHIMP CHIMP 246
-+stork_nest ARCH_STORK_NEST STORK_NEST 247
-+stork_egg ARCH_STORK_EGG STORK_EGG 248
-+wismo SA1100_WISMO WISMO 249
-+ezlinx ARCH_EZLINX EZLINX 250
-+at91rm9200 ARCH_AT91RM9200 AT91RM9200 251
-+adtech_orion ARCH_ADTECH_ORION ADTECH_ORION 252
-+neptune ARCH_NEPTUNE NEPTUNE 253
-+hackkit SA1100_HACKKIT HACKKIT 254
-+pxa_wins30 ARCH_PXA_WINS30 PXA_WINS30 255
-+lavinna SA1100_LAVINNA LAVINNA 256
-+pxa_uengine ARCH_PXA_UENGINE PXA_UENGINE 257
-+innokom ARCH_INNOKOM INNOKOM 258
-+bms ARCH_BMS BMS 259
-+ixcdp1100 ARCH_IXCDP1100 IXCDP1100 260
-+prpmc1100 ARCH_PRPMC1100 PRPMC1100 261
-+at91rm9200dk ARCH_AT91RM9200DK AT91RM9200DK 262
-+armstick ARCH_ARMSTICK ARMSTICK 263
-+armonie ARCH_ARMONIE ARMONIE 264
-+mport1 ARCH_MPORT1 MPORT1 265
-+s3c5410 ARCH_S3C5410 S3C5410 266
-+zcp320a ARCH_ZCP320A ZCP320A 267
-+i_box ARCH_I_BOX I_BOX 268
-+stlc1502 ARCH_STLC1502 STLC1502 269
-+siren ARCH_SIREN SIREN 270
-+greenlake ARCH_GREENLAKE GREENLAKE 271
-+argus ARCH_ARGUS ARGUS 272
-+combadge SA1100_COMBADGE COMBADGE 273
-+rokepxa ARCH_ROKEPXA ROKEPXA 274
-+cintegrator ARCH_CINTEGRATOR CINTEGRATOR 275
-+guidea07 ARCH_GUIDEA07 GUIDEA07 276
-+tat257 ARCH_TAT257 TAT257 277
-+igp2425 ARCH_IGP2425 IGP2425 278
-+bluegrama ARCH_BLUEGRAMMA BLUEGRAMMA 279
-+ipod ARCH_IPOD IPOD 280
-+adsbitsyx ARCH_ADSBITSYX ADSBITSYX 281
-+trizeps2 ARCH_TRIZEPS2 TRIZEPS2 282
-+viper ARCH_VIPER VIPER 283
-+adsbitsyplus SA1100_ADSBITSYPLUS ADSBITSYPLUS 284
-+adsagc SA1100_ADSAGC ADSAGC 285
-+stp7312 ARCH_STP7312 STP7312 286
-+nx_phnx MACH_NX_PHNX NX_PHNX 287
-+wep_ep250 ARCH_WEP_EP250 WEP_EP250 288
-+inhandelf3 ARCH_INHANDELF3 INHANDELF3 289
-+adi_coyote ARCH_ADI_COYOTE ADI_COYOTE 290
-+iyonix ARCH_IYONIX IYONIX 291
-+damicam1 ARCH_DAMICAM_SA1110 DAMICAM_SA1110 292
-+meg03 ARCH_MEG03 MEG03 293
-+pxa_whitechapel ARCH_PXA_WHITECHAPEL PXA_WHITECHAPEL 294
-+nwsc ARCH_NWSC NWSC 295
-+nwlarm ARCH_NWLARM NWLARM 296
-+ixp425_mguard ARCH_IXP425_MGUARD IXP425_MGUARD 297
-+pxa_netdcu4 ARCH_PXA_NETDCU4 PXA_NETDCU4 298
-+ixdp2401 ARCH_IXDP2401 IXDP2401 299
-+ixdp2801 ARCH_IXDP2801 IXDP2801 300
-+zodiac ARCH_ZODIAC ZODIAC 301
-+armmodul ARCH_ARMMODUL ARMMODUL 302
-+ketop SA1100_KETOP KETOP 303
-+av7200 ARCH_AV7200 AV7200 304
-+arch_ti925 ARCH_ARCH_TI925 ARCH_TI925 305
-+acq200 ARCH_ACQ200 ACQ200 306
-+pt_dafit SA1100_PT_DAFIT PT_DAFIT 307
-+ihba ARCH_IHBA IHBA 308
-+quinque ARCH_QUINQUE QUINQUE 309
-+nimbraone ARCH_NIMBRAONE NIMBRAONE 310
-+nimbra29x ARCH_NIMBRA29X NIMBRA29X 311
-+nimbra210 ARCH_NIMBRA210 NIMBRA210 312
-+hhp_d95xx ARCH_HHP_D95XX HHP_D95XX 313
-+labarm ARCH_LABARM LABARM 314
-+m825xx ARCH_M825XX M825XX 315
-+m7100 SA1100_M7100 M7100 316
-+nipc2 ARCH_NIPC2 NIPC2 317
-+fu7202 ARCH_FU7202 FU7202 318
-+adsagx ARCH_ADSAGX ADSAGX 319
-+pxa_pooh ARCH_PXA_POOH PXA_POOH 320
-+bandon ARCH_BANDON BANDON 321
-+pcm7210 ARCH_PCM7210 PCM7210 322
-+nms9200 ARCH_NMS9200 NMS9200 323
-+logodl ARCH_LOGODL LOGODL 324
-+m7140 SA1100_M7140 M7140 325
-+korebot ARCH_KOREBOT KOREBOT 326
-+iq31244 ARCH_IQ31244 IQ31244 327
-+koan393 SA1100_KOAN393 KOAN393 328
-+inhandftip3 ARCH_INHANDFTIP3 INHANDFTIP3 329
-+gonzo ARCH_GONZO GONZO 330
-+bast ARCH_BAST BAST 331
-+scanpass ARCH_SCANPASS SCANPASS 332
-+ep7312_pooh ARCH_EP7312_POOH EP7312_POOH 333
-+ta7s ARCH_TA7S TA7S 334
-+ta7v ARCH_TA7V TA7V 335
-+icarus SA1100_ICARUS ICARUS 336
-+h1900 ARCH_H1900 H1900 337
-+gemini SA1100_GEMINI GEMINI 338
-+axim ARCH_AXIM AXIM 339
-+audiotron ARCH_AUDIOTRON AUDIOTRON 340
-+h2200 ARCH_H2200 H2200 341
-+loox600 ARCH_LOOX600 LOOX600 342
-+niop ARCH_NIOP NIOP 343
-+dm310 ARCH_DM310 DM310 344
-+seedpxa_c2 ARCH_SEEDPXA_C2 SEEDPXA_C2 345
-+ixp4xx_mguardpci ARCH_IXP4XX_MGUARD_PCI IXP4XX_MGUARD_PCI 346
-+h1940 ARCH_H1940 H1940 347
-+scorpio ARCH_SCORPIO SCORPIO 348
-+viva ARCH_VIVA VIVA 349
-+pxa_xcard ARCH_PXA_XCARD PXA_XCARD 350
-+csb335 ARCH_CSB335 CSB335 351
-+ixrd425 ARCH_IXRD425 IXRD425 352
-+iq80315 ARCH_IQ80315 IQ80315 353
-+nmp7312 ARCH_NMP7312 NMP7312 354
-+cx861xx ARCH_CX861XX CX861XX 355
-+enp2611 ARCH_ENP2611 ENP2611 356
-+xda SA1100_XDA XDA 357
-+csir_ims ARCH_CSIR_IMS CSIR_IMS 358
-+ixp421_dnaeeth ARCH_IXP421_DNAEETH IXP421_DNAEETH 359
-+pocketserv9200 ARCH_POCKETSERV9200 POCKETSERV9200 360
-+toto ARCH_TOTO TOTO 361
-+s3c2440 ARCH_S3C2440 S3C2440 362
-+ks8695p ARCH_KS8695P KS8695P 363
-+se4000 ARCH_SE4000 SE4000 364
-+quadriceps ARCH_QUADRICEPS QUADRICEPS 365
-+bronco ARCH_BRONCO BRONCO 366
-+esl_wireless_tab ARCH_ESL_WIRELESS_TAB ESL_WIRELESS_TAB 367
-+esl_sofcomp ARCH_ESL_SOFCOMP ESL_SOFCOMP 368
-+s5c7375 ARCH_S5C7375 S5C7375 369
-+spearhead ARCH_SPEARHEAD SPEARHEAD 370
-+pantera ARCH_PANTERA PANTERA 371
-+prayoglite ARCH_PRAYOGLITE PRAYOGLITE 372
-+gumstix ARCH_GUMSTIX GUMSTIX 373
-+rcube ARCH_RCUBE RCUBE 374
-+rea_olv ARCH_REA_OLV REA_OLV 375
-+pxa_iphone ARCH_PXA_IPHONE PXA_IPHONE 376
-+s3c3410 ARCH_S3C3410 S3C3410 377
-+espd_4510b ARCH_ESPD_4510B ESPD_4510B 378
-+mp1x ARCH_MP1X MP1X 379
-+at91rm9200tb ARCH_AT91RM9200TB AT91RM9200TB 380
-+adsvgx ARCH_ADSVGX ADSVGX 381
-+omap_h2 MACH_OMAP_H2 OMAP_H2 382
-+pelee ARCH_PELEE PELEE 383
-+e740 MACH_E740 E740 384
-+iq80331 ARCH_IQ80331 IQ80331 385
-+versatile_pb ARCH_VERSATILE_PB VERSATILE_PB 387
-+kev7a400 MACH_KEV7A400 KEV7A400 388
-+lpd7a400 MACH_LPD7A400 LPD7A400 389
-+lpd7a404 MACH_LPD7A404 LPD7A404 390
-+fujitsu_camelot ARCH_FUJITSU_CAMELOT FUJITSU_CAMELOT 391
-+janus2m ARCH_JANUS2M JANUS2M 392
-+embtf MACH_EMBTF EMBTF 393
-+hpm MACH_HPM HPM 394
-+smdk2410tk MACH_SMDK2410TK SMDK2410TK 395
-+smdk2410aj MACH_SMDK2410AJ SMDK2410AJ 396
-+streetracer MACH_STREETRACER STREETRACER 397
-+eframe MACH_EFRAME EFRAME 398
-+csb337 MACH_CSB337 CSB337 399
-+pxa_lark MACH_PXA_LARK PXA_LARK 400
-+pxa_pnp2110 MACH_PNP2110 PNP2110 401
-+tcc72x MACH_TCC72X TCC72X 402
-+altair MACH_ALTAIR ALTAIR 403
-+kc3 MACH_KC3 KC3 404
-+sinteftd MACH_SINTEFTD SINTEFTD 405
-+mainstone MACH_MAINSTONE MAINSTONE 406
-+aday4x MACH_ADAY4X ADAY4X 407
-+lite300 MACH_LITE300 LITE300 408
-+s5c7376 MACH_S5C7376 S5C7376 409
-+mt02 MACH_MT02 MT02 410
-+mport3s MACH_MPORT3S MPORT3S 411
-+ra_alpha MACH_RA_ALPHA RA_ALPHA 412
-+xcep MACH_XCEP XCEP 413
-+arcom_vulcan MACH_ARCOM_VULCAN ARCOM_VULCAN 414
-+stargate MACH_STARGATE STARGATE 415
-+armadilloj MACH_ARMADILLOJ ARMADILLOJ 416
-+elroy_jack MACH_ELROY_JACK ELROY_JACK 417
-+backend MACH_BACKEND BACKEND 418
-+s5linbox MACH_S5LINBOX S5LINBOX 419
-+nomadik MACH_NOMADIK NOMADIK 420
-+ia_cpu_9200 MACH_IA_CPU_9200 IA_CPU_9200 421
-+at91_bja1 MACH_AT91_BJA1 AT91_BJA1 422
-+corgi MACH_CORGI CORGI 423
-+poodle MACH_POODLE POODLE 424
-+ten MACH_TEN TEN 425
-+roverp5p MACH_ROVERP5P ROVERP5P 426
-+sc2700 MACH_SC2700 SC2700 427
-+ex_eagle MACH_EX_EAGLE EX_EAGLE 428
-+nx_pxa12 MACH_NX_PXA12 NX_PXA12 429
-+nx_pxa5 MACH_NX_PXA5 NX_PXA5 430
-+blackboard2 MACH_BLACKBOARD2 BLACKBOARD2 431
-+i819 MACH_I819 I819 432
-+ixmb995e MACH_IXMB995E IXMB995E 433
-+skyrider MACH_SKYRIDER SKYRIDER 434
-+skyhawk MACH_SKYHAWK SKYHAWK 435
-+enterprise MACH_ENTERPRISE ENTERPRISE 436
-+dep2410 MACH_DEP2410 DEP2410 437
-+armcore MACH_ARMCORE ARMCORE 438
-+hobbit MACH_HOBBIT HOBBIT 439
-+h7210 MACH_H7210 H7210 440
-+pxa_netdcu5 MACH_PXA_NETDCU5 PXA_NETDCU5 441
-+acc MACH_ACC ACC 442
-+esl_sarva MACH_ESL_SARVA ESL_SARVA 443
-+xm250 MACH_XM250 XM250 444
-+t6tc1xb MACH_T6TC1XB T6TC1XB 445
-+ess710 MACH_ESS710 ESS710 446
-+mx31ads MACH_MX31ADS MX31ADS 447
-+himalaya MACH_HIMALAYA HIMALAYA 448
-+bolfenk MACH_BOLFENK BOLFENK 449
-+at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450
-+edb9312 MACH_EDB9312 EDB9312 451
-+omap_generic MACH_OMAP_GENERIC OMAP_GENERIC 452
-+aximx3 MACH_AXIMX3 AXIMX3 453
-+eb67xdip MACH_EB67XDIP EB67XDIP 454
-+webtxs MACH_WEBTXS WEBTXS 455
-+hawk MACH_HAWK HAWK 456
-+ccat91sbc001 MACH_CCAT91SBC001 CCAT91SBC001 457
-+expresso MACH_EXPRESSO EXPRESSO 458
-+h4000 MACH_H4000 H4000 459
-+dino MACH_DINO DINO 460
-+ml675k MACH_ML675K ML675K 461
-+edb9301 MACH_EDB9301 EDB9301 462
-+edb9315 MACH_EDB9315 EDB9315 463
-+reciva_tt MACH_RECIVA_TT RECIVA_TT 464
-+cstcb01 MACH_CSTCB01 CSTCB01 465
-+cstcb1 MACH_CSTCB1 CSTCB1 466
-+shadwell MACH_SHADWELL SHADWELL 467
-+goepel263 MACH_GOEPEL263 GOEPEL263 468
-+acq100 MACH_ACQ100 ACQ100 469
-+mx1fs2 MACH_MX1FS2 MX1FS2 470
-+hiptop_g1 MACH_HIPTOP_G1 HIPTOP_G1 471
-+sparky MACH_SPARKY SPARKY 472
-+ns9750 MACH_NS9750 NS9750 473
-+phoenix MACH_PHOENIX PHOENIX 474
-+vr1000 MACH_VR1000 VR1000 475
-+deisterpxa MACH_DEISTERPXA DEISTERPXA 476
-+bcm1160 MACH_BCM1160 BCM1160 477
-+pcm022 MACH_PCM022 PCM022 478
-+adsgcx MACH_ADSGCX ADSGCX 479
-+dreadnaught MACH_DREADNAUGHT DREADNAUGHT 480
-+dm320 MACH_DM320 DM320 481
-+markov MACH_MARKOV MARKOV 482
-+cos7a400 MACH_COS7A400 COS7A400 483
-+milano MACH_MILANO MILANO 484
-+ue9328 MACH_UE9328 UE9328 485
-+uex255 MACH_UEX255 UEX255 486
-+ue2410 MACH_UE2410 UE2410 487
-+a620 MACH_A620 A620 488
-+ocelot MACH_OCELOT OCELOT 489
-+cheetah MACH_CHEETAH CHEETAH 490
-+omap_perseus2 MACH_OMAP_PERSEUS2 OMAP_PERSEUS2 491
-+zvue MACH_ZVUE ZVUE 492
-+roverp1 MACH_ROVERP1 ROVERP1 493
-+asidial2 MACH_ASIDIAL2 ASIDIAL2 494
-+s3c24a0 MACH_S3C24A0 S3C24A0 495
-+e800 MACH_E800 E800 496
-+e750 MACH_E750 E750 497
-+s3c5500 MACH_S3C5500 S3C5500 498
-+smdk5500 MACH_SMDK5500 SMDK5500 499
-+signalsync MACH_SIGNALSYNC SIGNALSYNC 500
-+nbc MACH_NBC NBC 501
-+kodiak MACH_KODIAK KODIAK 502
-+netbookpro MACH_NETBOOKPRO NETBOOKPRO 503
-+hw90200 MACH_HW90200 HW90200 504
-+condor MACH_CONDOR CONDOR 505
-+cup MACH_CUP CUP 506
-+kite MACH_KITE KITE 507
-+scb9328 MACH_SCB9328 SCB9328 508
-+omap_h3 MACH_OMAP_H3 OMAP_H3 509
-+omap_h4 MACH_OMAP_H4 OMAP_H4 510
-+n10 MACH_N10 N10 511
-+montejade MACH_MONTAJADE MONTAJADE 512
-+sg560 MACH_SG560 SG560 513
-+dp1000 MACH_DP1000 DP1000 514
-+omap_osk MACH_OMAP_OSK OMAP_OSK 515
-+rg100v3 MACH_RG100V3 RG100V3 516
-+mx2ads MACH_MX2ADS MX2ADS 517
-+pxa_kilo MACH_PXA_KILO PXA_KILO 518
-+ixp4xx_eagle MACH_IXP4XX_EAGLE IXP4XX_EAGLE 519
-+tosa MACH_TOSA TOSA 520
-+mb2520f MACH_MB2520F MB2520F 521
-+emc1000 MACH_EMC1000 EMC1000 522
-+tidsc25 MACH_TIDSC25 TIDSC25 523
-+akcpmxl MACH_AKCPMXL AKCPMXL 524
-+av3xx MACH_AV3XX AV3XX 525
-+avila MACH_AVILA AVILA 526
-+pxa_mpm10 MACH_PXA_MPM10 PXA_MPM10 527
-+pxa_kyanite MACH_PXA_KYANITE PXA_KYANITE 528
-+sgold MACH_SGOLD SGOLD 529
-+oscar MACH_OSCAR OSCAR 530
-+epxa4usb2 MACH_EPXA4USB2 EPXA4USB2 531
-+xsengine MACH_XSENGINE XSENGINE 532
-+ip600 MACH_IP600 IP600 533
-+mcan2 MACH_MCAN2 MCAN2 534
-+ddi_blueridge MACH_DDI_BLUERIDGE DDI_BLUERIDGE 535
-+skyminder MACH_SKYMINDER SKYMINDER 536
-+lpd79520 MACH_LPD79520 LPD79520 537
-+edb9302 MACH_EDB9302 EDB9302 538
-+hw90340 MACH_HW90340 HW90340 539
-+cip_box MACH_CIP_BOX CIP_BOX 540
-+ivpn MACH_IVPN IVPN 541
-+rsoc2 MACH_RSOC2 RSOC2 542
-+husky MACH_HUSKY HUSKY 543
-+boxer MACH_BOXER BOXER 544
-+shepherd MACH_SHEPHERD SHEPHERD 545
-+aml42800aa MACH_AML42800AA AML42800AA 546
-+lpc2294 MACH_LPC2294 LPC2294 548
-+switchgrass MACH_SWITCHGRASS SWITCHGRASS 549
-+ens_cmu MACH_ENS_CMU ENS_CMU 550
-+mm6_sdb MACH_MM6_SDB MM6_SDB 551
-+saturn MACH_SATURN SATURN 552
-+i30030evb MACH_I30030EVB I30030EVB 553
-+mxc27530evb MACH_MXC27530EVB MXC27530EVB 554
-+smdk2800 MACH_SMDK2800 SMDK2800 555
-+mtwilson MACH_MTWILSON MTWILSON 556
-+ziti MACH_ZITI ZITI 557
-+grandfather MACH_GRANDFATHER GRANDFATHER 558
-+tengine MACH_TENGINE TENGINE 559
-+s3c2460 MACH_S3C2460 S3C2460 560
-+pdm MACH_PDM PDM 561
-+h4700 MACH_H4700 H4700 562
-+h6300 MACH_H6300 H6300 563
-+rz1700 MACH_RZ1700 RZ1700 564
-+a716 MACH_A716 A716 565
-+estk2440a MACH_ESTK2440A ESTK2440A 566
-+atwixp425 MACH_ATWIXP425 ATWIXP425 567
-+csb336 MACH_CSB336 CSB336 568
-+rirm2 MACH_RIRM2 RIRM2 569
-+cx23518 MACH_CX23518 CX23518 570
-+cx2351x MACH_CX2351X CX2351X 571
-+computime MACH_COMPUTIME COMPUTIME 572
-+izarus MACH_IZARUS IZARUS 573
-+pxa_rts MACH_RTS RTS 574
-+se5100 MACH_SE5100 SE5100 575
-+s3c2510 MACH_S3C2510 S3C2510 576
-+csb437tl MACH_CSB437TL CSB437TL 577
-+slauson MACH_SLAUSON SLAUSON 578
-+pearlriver MACH_PEARLRIVER PEARLRIVER 579
-+tdc_p210 MACH_TDC_P210 TDC_P210 580
-+sg580 MACH_SG580 SG580 581
-+wrsbcarm7 MACH_WRSBCARM7 WRSBCARM7 582
-+ipd MACH_IPD IPD 583
-+pxa_dnp2110 MACH_PXA_DNP2110 PXA_DNP2110 584
-+xaeniax MACH_XAENIAX XAENIAX 585
-+somn4250 MACH_SOMN4250 SOMN4250 586
-+pleb2 MACH_PLEB2 PLEB2 587
-+cornwallis MACH_CORNWALLIS CORNWALLIS 588
-+gurney_drv MACH_GURNEY_DRV GURNEY_DRV 589
-+chaffee MACH_CHAFFEE CHAFFEE 590
-+rms101 MACH_RMS101 RMS101 591
-+rx3715 MACH_RX3715 RX3715 592
-+swift MACH_SWIFT SWIFT 593
-+roverp7 MACH_ROVERP7 ROVERP7 594
-+pr818s MACH_PR818S PR818S 595
-+trxpro MACH_TRXPRO TRXPRO 596
-+nslu2 MACH_NSLU2 NSLU2 597
-+e400 MACH_E400 E400 598
-+trab MACH_TRAB TRAB 599
-+cmc_pu2 MACH_CMC_PU2 CMC_PU2 600
-+fulcrum MACH_FULCRUM FULCRUM 601
-+netgate42x MACH_NETGATE42X NETGATE42X 602
-+str710 MACH_STR710 STR710 603
-+ixdpg425 MACH_IXDPG425 IXDPG425 604
-+tomtomgo MACH_TOMTOMGO TOMTOMGO 605
-+versatile_ab MACH_VERSATILE_AB VERSATILE_AB 606
-+edb9307 MACH_EDB9307 EDB9307 607
-+sg565 MACH_SG565 SG565 608
-+lpd79524 MACH_LPD79524 LPD79524 609
-+lpd79525 MACH_LPD79525 LPD79525 610
-+rms100 MACH_RMS100 RMS100 611
-+kb9200 MACH_KB9200 KB9200 612
-+sx1 MACH_SX1 SX1 613
-+hms39c7092 MACH_HMS39C7092 HMS39C7092 614
-+armadillo MACH_ARMADILLO ARMADILLO 615
-+ipcu MACH_IPCU IPCU 616
-+loox720 MACH_LOOX720 LOOX720 617
-+ixdp465 MACH_IXDP465 IXDP465 618
-+ixdp2351 MACH_IXDP2351 IXDP2351 619
-+adsvix MACH_ADSVIX ADSVIX 620
-+dm270 MACH_DM270 DM270 621
-+socltplus MACH_SOCLTPLUS SOCLTPLUS 622
-+ecia MACH_ECIA ECIA 623
-+cm4008 MACH_CM4008 CM4008 624
-+p2001 MACH_P2001 P2001 625
-+twister MACH_TWISTER TWISTER 626
-+mudshark MACH_MUDSHARK MUDSHARK 627
-+hb2 MACH_HB2 HB2 628
-+iq80332 MACH_IQ80332 IQ80332 629
-+sendt MACH_SENDT SENDT 630
-+mx2jazz MACH_MX2JAZZ MX2JAZZ 631
-+multiio MACH_MULTIIO MULTIIO 632
-+hrdisplay MACH_HRDISPLAY HRDISPLAY 633
-+mxc27530ads MACH_MXC27530ADS MXC27530ADS 634
-+trizeps3 MACH_TRIZEPS3 TRIZEPS3 635
-+zefeerdza MACH_ZEFEERDZA ZEFEERDZA 636
-+zefeerdzb MACH_ZEFEERDZB ZEFEERDZB 637
-+zefeerdzg MACH_ZEFEERDZG ZEFEERDZG 638
-+zefeerdzn MACH_ZEFEERDZN ZEFEERDZN 639
-+zefeerdzq MACH_ZEFEERDZQ ZEFEERDZQ 640
-+gtwx5715 MACH_GTWX5715 GTWX5715 641
-+astro_jack MACH_ASTRO_JACK ASTRO_JACK 643
-+tip03 MACH_TIP03 TIP03 644
-+a9200ec MACH_A9200EC A9200EC 645
-+pnx0105 MACH_PNX0105 PNX0105 646
-+adcpoecpu MACH_ADCPOECPU ADCPOECPU 647
-+csb637 MACH_CSB637 CSB637 648
-+mb9200 MACH_MB9200 MB9200 650
-+kulun MACH_KULUN KULUN 651
-+snapper MACH_SNAPPER SNAPPER 652
-+optima MACH_OPTIMA OPTIMA 653
-+dlhsbc MACH_DLHSBC DLHSBC 654
-+x30 MACH_X30 X30 655
-+n30 MACH_N30 N30 656
-+manga_ks8695 MACH_MANGA_KS8695 MANGA_KS8695 657
-+ajax MACH_AJAX AJAX 658
-+nec_mp900 MACH_NEC_MP900 NEC_MP900 659
-+vvtk1000 MACH_VVTK1000 VVTK1000 661
-+kafa MACH_KAFA KAFA 662
-+vvtk3000 MACH_VVTK3000 VVTK3000 663
-+pimx1 MACH_PIMX1 PIMX1 664
-+ollie MACH_OLLIE OLLIE 665
-+skymax MACH_SKYMAX SKYMAX 666
-+jazz MACH_JAZZ JAZZ 667
-+tel_t3 MACH_TEL_T3 TEL_T3 668
-+aisino_fcr255 MACH_AISINO_FCR255 AISINO_FCR255 669
-+btweb MACH_BTWEB BTWEB 670
-+dbg_lh79520 MACH_DBG_LH79520 DBG_LH79520 671
-+cm41xx MACH_CM41XX CM41XX 672
-+ts72xx MACH_TS72XX TS72XX 673
-+nggpxa MACH_NGGPXA NGGPXA 674
-+csb535 MACH_CSB535 CSB535 675
-+csb536 MACH_CSB536 CSB536 676
-+pxa_trakpod MACH_PXA_TRAKPOD PXA_TRAKPOD 677
-+praxis MACH_PRAXIS PRAXIS 678
-+lh75411 MACH_LH75411 LH75411 679
-+otom MACH_OTOM OTOM 680
-+nexcoder_2440 MACH_NEXCODER_2440 NEXCODER_2440 681
-+loox410 MACH_LOOX410 LOOX410 682
-+westlake MACH_WESTLAKE WESTLAKE 683
-+nsb MACH_NSB NSB 684
-+esl_sarva_stn MACH_ESL_SARVA_STN ESL_SARVA_STN 685
-+esl_sarva_tft MACH_ESL_SARVA_TFT ESL_SARVA_TFT 686
-+esl_sarva_iad MACH_ESL_SARVA_IAD ESL_SARVA_IAD 687
-+esl_sarva_acc MACH_ESL_SARVA_ACC ESL_SARVA_ACC 688
-+typhoon MACH_TYPHOON TYPHOON 689
-+cnav MACH_CNAV CNAV 690
-+a730 MACH_A730 A730 691
-+netstar MACH_NETSTAR NETSTAR 692
-+supercon MACH_PHASEFALE_SUPERCON PHASEFALE_SUPERCON 693
-+shiva1100 MACH_SHIVA1100 SHIVA1100 694
-+etexsc MACH_ETEXSC ETEXSC 695
-+ixdpg465 MACH_IXDPG465 IXDPG465 696
-+a9m2410 MACH_A9M2410 A9M2410 697
-+a9m2440 MACH_A9M2440 A9M2440 698
-+a9m9750 MACH_A9M9750 A9M9750 699
-+a9m9360 MACH_A9M9360 A9M9360 700
-+unc90 MACH_UNC90 UNC90 701
-+eco920 MACH_ECO920 ECO920 702
-+satview MACH_SATVIEW SATVIEW 703
-+roadrunner MACH_ROADRUNNER ROADRUNNER 704
-+at91rm9200ek MACH_AT91RM9200EK AT91RM9200EK 705
-+gp32 MACH_GP32 GP32 706
-+gem MACH_GEM GEM 707
-+i858 MACH_I858 I858 708
-+hx2750 MACH_HX2750 HX2750 709
-+mxc91131evb MACH_MXC91131EVB MXC91131EVB 710
-+p700 MACH_P700 P700 711
-+cpe MACH_CPE CPE 712
-+spitz MACH_SPITZ SPITZ 713
-+nimbra340 MACH_NIMBRA340 NIMBRA340 714
-+lpc22xx MACH_LPC22XX LPC22XX 715
-+omap_comet3 MACH_COMET3 COMET3 716
-+omap_comet4 MACH_COMET4 COMET4 717
-+csb625 MACH_CSB625 CSB625 718
-+fortunet2 MACH_FORTUNET2 FORTUNET2 719
-+s5h2200 MACH_S5H2200 S5H2200 720
-+optorm920 MACH_OPTORM920 OPTORM920 721
-+adsbitsyxb MACH_ADSBITSYXB ADSBITSYXB 722
-+adssphere MACH_ADSSPHERE ADSSPHERE 723
-+adsportal MACH_ADSPORTAL ADSPORTAL 724
-+ln2410sbc MACH_LN2410SBC LN2410SBC 725
-+cb3rufc MACH_CB3RUFC CB3RUFC 726
-+mp2usb MACH_MP2USB MP2USB 727
-+ntnp425c MACH_NTNP425C NTNP425C 728
-+colibri MACH_COLIBRI COLIBRI 729
-+pcm7220 MACH_PCM7220 PCM7220 730
-+gateway7001 MACH_GATEWAY7001 GATEWAY7001 731
-+pcm027 MACH_PCM027 PCM027 732
-+cmpxa MACH_CMPXA CMPXA 733
-+anubis MACH_ANUBIS ANUBIS 734
-+ite8152 MACH_ITE8152 ITE8152 735
-+lpc3xxx MACH_LPC3XXX LPC3XXX 736
-+puppeteer MACH_PUPPETEER PUPPETEER 737
-+e570 MACH_E570 E570 739
-+x50 MACH_X50 X50 740
-+recon MACH_RECON RECON 741
-+xboardgp8 MACH_XBOARDGP8 XBOARDGP8 742
-+fpic2 MACH_FPIC2 FPIC2 743
-+akita MACH_AKITA AKITA 744
-+a81 MACH_A81 A81 745
-+svm_sc25x MACH_SVM_SC25X SVM_SC25X 746
-+vt020 MACH_VADATECH020 VADATECH020 747
-+tli MACH_TLI TLI 748
-+edb9315lc MACH_EDB9315LC EDB9315LC 749
-+passec MACH_PASSEC PASSEC 750
-+ds_tiger MACH_DS_TIGER DS_TIGER 751
-+e310 MACH_E310 E310 752
-+e330 MACH_E330 E330 753
-+rt3000 MACH_RT3000 RT3000 754
-+nokia770 MACH_NOKIA770 NOKIA770 755
-+pnx0106 MACH_PNX0106 PNX0106 756
-+hx21xx MACH_HX21XX HX21XX 757
-+faraday MACH_FARADAY FARADAY 758
-+sbc9312 MACH_SBC9312 SBC9312 759
-+batman MACH_BATMAN BATMAN 760
-+jpd201 MACH_JPD201 JPD201 761
-+mipsa MACH_MIPSA MIPSA 762
-+kacom MACH_KACOM KACOM 763
-+swarcocpu MACH_SWARCOCPU SWARCOCPU 764
-+swarcodsl MACH_SWARCODSL SWARCODSL 765
-+blueangel MACH_BLUEANGEL BLUEANGEL 766
-+hairygrama MACH_HAIRYGRAMA HAIRYGRAMA 767
-+banff MACH_BANFF BANFF 768
-+carmeva MACH_CARMEVA CARMEVA 769
-+sam255 MACH_SAM255 SAM255 770
-+ppm10 MACH_PPM10 PPM10 771
-+edb9315a MACH_EDB9315A EDB9315A 772
-+sunset MACH_SUNSET SUNSET 773
-+stargate2 MACH_STARGATE2 STARGATE2 774
-+intelmote2 MACH_INTELMOTE2 INTELMOTE2 775
-+trizeps4 MACH_TRIZEPS4 TRIZEPS4 776
-+mainstone2 MACH_MAINSTONE2 MAINSTONE2 777
-+ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778
-+tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779
-+universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780
-+hicoarm9 MACH_HICOARM9 HICOARM9 781
-+pnx4008 MACH_PNX4008 PNX4008 782
-+kws6000 MACH_KWS6000 KWS6000 783
-+portux920t MACH_PORTUX920T PORTUX920T 784
-+ez_x5 MACH_EZ_X5 EZ_X5 785
-+omap_rudolph MACH_OMAP_RUDOLPH OMAP_RUDOLPH 786
-+cpuat91 MACH_CPUAT91 CPUAT91 787
-+rea9200 MACH_REA9200 REA9200 788
-+acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789
-+ixp425 MACH_IXP425 IXP425 790
-+i30030ads MACH_I30030ADS I30030ADS 791
-+perch MACH_PERCH PERCH 792
-+eis05r1 MACH_EIS05R1 EIS05R1 793
-+pepperpad MACH_PEPPERPAD PEPPERPAD 794
-+sb3010 MACH_SB3010 SB3010 795
-+rm9200 MACH_RM9200 RM9200 796
-+dma03 MACH_DMA03 DMA03 797
-+road_s101 MACH_ROAD_S101 ROAD_S101 798
-+iq81340sc MACH_IQ81340SC IQ81340SC 799
-+iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800
-+iq81340mc MACH_IQ81340MC IQ81340MC 801
-+iq_nextgen_d MACH_IQ_NEXTGEN_D IQ_NEXTGEN_D 802
-+iq_nextgen_e MACH_IQ_NEXTGEN_E IQ_NEXTGEN_E 803
-+mallow_at91 MACH_MALLOW_AT91 MALLOW_AT91 804
-+cybertracker_i MACH_CYBERTRACKER_I CYBERTRACKER_I 805
-+gesbc931x MACH_GESBC931X GESBC931X 806
-+centipad MACH_CENTIPAD CENTIPAD 807
-+armsoc MACH_ARMSOC ARMSOC 808
-+se4200 MACH_SE4200 SE4200 809
-+ems197a MACH_EMS197A EMS197A 810
-+micro9 MACH_MICRO9 MICRO9 811
-+micro9l MACH_MICRO9L MICRO9L 812
-+uc5471dsp MACH_UC5471DSP UC5471DSP 813
-+sj5471eng MACH_SJ5471ENG SJ5471ENG 814
-+none MACH_CMPXA26X CMPXA26X 815
-+nc1 MACH_NC NC 816
-+omap_palmte MACH_OMAP_PALMTE OMAP_PALMTE 817
-+ajax52x MACH_AJAX52X AJAX52X 818
-+siriustar MACH_SIRIUSTAR SIRIUSTAR 819
-+iodata_hdlg MACH_IODATA_HDLG IODATA_HDLG 820
-+at91rm9200utl MACH_AT91RM9200UTL AT91RM9200UTL 821
-+biosafe MACH_BIOSAFE BIOSAFE 822
-+mp1000 MACH_MP1000 MP1000 823
-+parsy MACH_PARSY PARSY 824
-+ccxp270 MACH_CCXP CCXP 825
-+omap_gsample MACH_OMAP_GSAMPLE OMAP_GSAMPLE 826
-+realview_eb MACH_REALVIEW_EB REALVIEW_EB 827
-+samoa MACH_SAMOA SAMOA 828
-+palmt3 MACH_PALMT3 PALMT3 829
-+i878 MACH_I878 I878 830
-+borzoi MACH_BORZOI BORZOI 831
-+gecko MACH_GECKO GECKO 832
-+ds101 MACH_DS101 DS101 833
-+omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834
-+palmld MACH_PALMLD PALMLD 835
-+cc9c MACH_CC9C CC9C 836
-+sbc1670 MACH_SBC1670 SBC1670 837
-+ixdp28x5 MACH_IXDP28X5 IXDP28X5 838
-+omap_palmtt MACH_OMAP_PALMTT OMAP_PALMTT 839
-+ml696k MACH_ML696K ML696K 840
-+arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841
-+osiris MACH_OSIRIS OSIRIS 842
-+maestro MACH_MAESTRO MAESTRO 843
-+palmte2 MACH_PALMTE2 PALMTE2 844
-+ixbbm MACH_IXBBM IXBBM 845
-+mx27ads MACH_MX27ADS MX27ADS 846
-+ax8004 MACH_AX8004 AX8004 847
-+at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
-+loft MACH_LOFT LOFT 849
-+magpie MACH_MAGPIE MAGPIE 850
-+mx21ads MACH_MX21ADS MX21ADS 851
-+mb87m3400 MACH_MB87M3400 MB87M3400 852
-+mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853
-+davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854
-+htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855
-+tpad MACH_TPAD TPAD 856
-+roverp3 MACH_ROVERP3 ROVERP3 857
-+jornada928 MACH_JORNADA928 JORNADA928 858
-+mv88fxx81 MACH_MV88FXX81 MV88FXX81 859
-+stmp36xx MACH_STMP36XX STMP36XX 860
-+sxni79524 MACH_SXNI79524 SXNI79524 861
-+ams_delta MACH_AMS_DELTA AMS_DELTA 862
-+uranium MACH_URANIUM URANIUM 863
-+ucon MACH_UCON UCON 864
-+nas100d MACH_NAS100D NAS100D 865
-+l083 MACH_L083_1000 L083_1000 866
-+ezx MACH_EZX EZX 867
-+pnx5220 MACH_PNX5220 PNX5220 868
-+butte MACH_BUTTE BUTTE 869
-+srm2 MACH_SRM2 SRM2 870
-+dsbr MACH_DSBR DSBR 871
-+crystalball MACH_CRYSTALBALL CRYSTALBALL 872
-+tinypxa27x MACH_TINYPXA27X TINYPXA27X 873
-+herbie MACH_HERBIE HERBIE 874
-+magician MACH_MAGICIAN MAGICIAN 875
-+cm4002 MACH_CM4002 CM4002 876
-+b4 MACH_B4 B4 877
-+maui MACH_MAUI MAUI 878
-+cybertracker_g MACH_CYBERTRACKER_G CYBERTRACKER_G 879
-+nxdkn MACH_NXDKN NXDKN 880
-+mio8390 MACH_MIO8390 MIO8390 881
-+omi_board MACH_OMI_BOARD OMI_BOARD 882
-+mx21civ MACH_MX21CIV MX21CIV 883
-+mahi_cdac MACH_MAHI_CDAC MAHI_CDAC 884
-+palmtx MACH_PALMTX PALMTX 885
-+s3c2413 MACH_S3C2413 S3C2413 887
-+samsys_ep0 MACH_SAMSYS_EP0 SAMSYS_EP0 888
-+wg302v1 MACH_WG302V1 WG302V1 889
-+wg302v2 MACH_WG302V2 WG302V2 890
-+eb42x MACH_EB42X EB42X 891
-+iq331es MACH_IQ331ES IQ331ES 892
-+cosydsp MACH_COSYDSP COSYDSP 893
-+uplat7d_proto MACH_UPLAT7D UPLAT7D 894
-+ptdavinci MACH_PTDAVINCI PTDAVINCI 895
-+mbus MACH_MBUS MBUS 896
-+nadia2vb MACH_NADIA2VB NADIA2VB 897
-+r1000 MACH_R1000 R1000 898
-+hw90250 MACH_HW90250 HW90250 899
-+omap_2430sdp MACH_OMAP_2430SDP OMAP_2430SDP 900
-+davinci_evm MACH_DAVINCI_EVM DAVINCI_EVM 901
-+omap_tornado MACH_OMAP_TORNADO OMAP_TORNADO 902
-+olocreek MACH_OLOCREEK OLOCREEK 903
-+palmz72 MACH_PALMZ72 PALMZ72 904
-+nxdb500 MACH_NXDB500 NXDB500 905
-+apf9328 MACH_APF9328 APF9328 906
-+omap_wipoq MACH_OMAP_WIPOQ OMAP_WIPOQ 907
-+omap_twip MACH_OMAP_TWIP OMAP_TWIP 908
-+treo650 MACH_TREO650 TREO650 909
-+acumen MACH_ACUMEN ACUMEN 910
-+xp100 MACH_XP100 XP100 911
-+fs2410 MACH_FS2410 FS2410 912
-+pxa270_cerf MACH_PXA270_CERF PXA270_CERF 913
-+sq2ftlpalm MACH_SQ2FTLPALM SQ2FTLPALM 914
-+bsemserver MACH_BSEMSERVER BSEMSERVER 915
-+netclient MACH_NETCLIENT NETCLIENT 916
-+palmt5 MACH_PALMT5 PALMT5 917
-+palmtc MACH_PALMTC PALMTC 918
-+omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
-+mxc30030evb MACH_MXC30030EVB MXC30030EVB 920
-+rea_cpu2 MACH_REA_2D REA_2D 921
-+eti3e524 MACH_TI3E524 TI3E524 922
-+ateb9200 MACH_ATEB9200 ATEB9200 923
-+auckland MACH_AUCKLAND AUCKLAND 924
-+ak3220m MACH_AK3320M AK3320M 925
-+duramax MACH_DURAMAX DURAMAX 926
-+n35 MACH_N35 N35 927
-+pronghorn MACH_PRONGHORN PRONGHORN 928
-+fundy MACH_FUNDY FUNDY 929
-+logicpd_pxa270 MACH_LOGICPD_PXA270 LOGICPD_PXA270 930
-+cpu777 MACH_CPU777 CPU777 931
-+simicon9201 MACH_SIMICON9201 SIMICON9201 932
-+leap2_hpm MACH_LEAP2_HPM LEAP2_HPM 933
-+cm922txa10 MACH_CM922TXA10 CM922TXA10 934
-+sandgate MACH_PXA PXA 935
-+sandgate2 MACH_SANDGATE2 SANDGATE2 936
-+sandgate2g MACH_SANDGATE2G SANDGATE2G 937
-+sandgate2p MACH_SANDGATE2P SANDGATE2P 938
-+fred_jack MACH_FRED_JACK FRED_JACK 939
-+ttg_color1 MACH_TTG_COLOR1 TTG_COLOR1 940
-+nxeb500hmi MACH_NXEB500HMI NXEB500HMI 941
-+netdcu8 MACH_NETDCU8 NETDCU8 942
-+ng_fvx538 MACH_NG_FVX538 NG_FVX538 944
-+ng_fvs338 MACH_NG_FVS338 NG_FVS338 945
-+pnx4103 MACH_PNX4103 PNX4103 946
-+hesdb MACH_HESDB HESDB 947
-+xsilo MACH_XSILO XSILO 948
-+espresso MACH_ESPRESSO ESPRESSO 949
-+emlc MACH_EMLC EMLC 950
-+sisteron MACH_SISTERON SISTERON 951
-+rx1950 MACH_RX1950 RX1950 952
-+tsc_venus MACH_TSC_VENUS TSC_VENUS 953
-+ds101j MACH_DS101J DS101J 954
-+mxc30030ads MACH_MXC30030ADS MXC30030ADS 955
-+fujitsu_wimaxsoc MACH_FUJITSU_WIMAXSOC FUJITSU_WIMAXSOC 956
-+dualpcmodem MACH_DUALPCMODEM DUALPCMODEM 957
-+gesbc9312 MACH_GESBC9312 GESBC9312 958
-+htcapache MACH_HTCAPACHE HTCAPACHE 959
-+ixdp435 MACH_IXDP435 IXDP435 960
-+catprovt100 MACH_CATPROVT100 CATPROVT100 961
-+picotux1xx MACH_PICOTUX1XX PICOTUX1XX 962
-+picotux2xx MACH_PICOTUX2XX PICOTUX2XX 963
-+dsmg600 MACH_DSMG600 DSMG600 964
-+empc2 MACH_EMPC2 EMPC2 965
-+ventura MACH_VENTURA VENTURA 966
-+phidget_sbc MACH_PHIDGET_SBC PHIDGET_SBC 967
-+ij3k MACH_IJ3K IJ3K 968
-+pisgah MACH_PISGAH PISGAH 969
-+omap_fsample MACH_OMAP_FSAMPLE OMAP_FSAMPLE 970
-+sg720 MACH_SG720 SG720 971
-+redfox MACH_REDFOX REDFOX 972
-+mysh_ep9315_1 MACH_MYSH_EP9315_1 MYSH_EP9315_1 973
-+tpf106 MACH_TPF106 TPF106 974
-+at91rm9200kg MACH_AT91RM9200KG AT91RM9200KG 975
-+rcmt2 MACH_SLEDB SLEDB 976
-+ontrack MACH_ONTRACK ONTRACK 977
-+pm1200 MACH_PM1200 PM1200 978
-+ess24562 MACH_ESS24XXX ESS24XXX 979
-+coremp7 MACH_COREMP7 COREMP7 980
-+nexcoder_6446 MACH_NEXCODER_6446 NEXCODER_6446 981
-+stvc8380 MACH_STVC8380 STVC8380 982
-+teklynx MACH_TEKLYNX TEKLYNX 983
-+carbonado MACH_CARBONADO CARBONADO 984
-+sysmos_mp730 MACH_SYSMOS_MP730 SYSMOS_MP730 985
-+snapper_cl15 MACH_SNAPPER_CL15 SNAPPER_CL15 986
-+pgigim MACH_PGIGIM PGIGIM 987
-+ptx9160p2 MACH_PTX9160P2 PTX9160P2 988
-+dcore1 MACH_DCORE1 DCORE1 989
-+victorpxa MACH_VICTORPXA VICTORPXA 990
-+mx2dtb MACH_MX2DTB MX2DTB 991
-+pxa_irex_er0100 MACH_PXA_IREX_ER0100 PXA_IREX_ER0100 992
-+omap_palmz71 MACH_OMAP_PALMZ71 OMAP_PALMZ71 993
-+bartec_deg MACH_BARTEC_DEG BARTEC_DEG 994
-+hw50251 MACH_HW50251 HW50251 995
-+ibox MACH_IBOX IBOX 996
-+atlaslh7a404 MACH_ATLASLH7A404 ATLASLH7A404 997
-+pt2026 MACH_PT2026 PT2026 998
-+htcalpine MACH_HTCALPINE HTCALPINE 999
-+bartec_vtu MACH_BARTEC_VTU BARTEC_VTU 1000
-+vcoreii MACH_VCOREII VCOREII 1001
-+pdnb3 MACH_PDNB3 PDNB3 1002
-+htcbeetles MACH_HTCBEETLES HTCBEETLES 1003
-+s3c6400 MACH_S3C6400 S3C6400 1004
-+s3c2443 MACH_S3C2443 S3C2443 1005
-+omap_ldk MACH_OMAP_LDK OMAP_LDK 1006
-+smdk2460 MACH_SMDK2460 SMDK2460 1007
-+smdk2440 MACH_SMDK2440 SMDK2440 1008
-+smdk2412 MACH_SMDK2412 SMDK2412 1009
-+webbox MACH_WEBBOX WEBBOX 1010
-+cwwndp MACH_CWWNDP CWWNDP 1011
-+i839 MACH_DRAGON DRAGON 1012
-+opendo_cpu_board MACH_OPENDO_CPU_BOARD OPENDO_CPU_BOARD 1013
-+ccm2200 MACH_CCM2200 CCM2200 1014
-+etwarm MACH_ETWARM ETWARM 1015
-+m93030 MACH_M93030 M93030 1016
-+cc7u MACH_CC7U CC7U 1017
-+mtt_ranger MACH_MTT_RANGER MTT_RANGER 1018
-+nexus MACH_NEXUS NEXUS 1019
-+desman MACH_DESMAN DESMAN 1020
-+bkde303 MACH_BKDE303 BKDE303 1021
-+smdk2413 MACH_SMDK2413 SMDK2413 1022
-+aml_m7200 MACH_AML_M7200 AML_M7200 1023
-+aml_m5900 MACH_AML_M5900 AML_M5900 1024
-+sg640 MACH_SG640 SG640 1025
-+edg79524 MACH_EDG79524 EDG79524 1026
-+ai2410 MACH_AI2410 AI2410 1027
-+ixp465 MACH_IXP465 IXP465 1028
-+balloon3 MACH_BALLOON3 BALLOON3 1029
-+heins MACH_HEINS HEINS 1030
-+mpluseva MACH_MPLUSEVA MPLUSEVA 1031
-+rt042 MACH_RT042 RT042 1032
-+cwiem MACH_CWIEM CWIEM 1033
-+cm_x270 MACH_CM_X270 CM_X270 1034
-+cm_x255 MACH_CM_X255 CM_X255 1035
-+esh_at91 MACH_ESH_AT91 ESH_AT91 1036
-+sandgate3 MACH_SANDGATE3 SANDGATE3 1037
-+primo MACH_PRIMO PRIMO 1038
-+gemstone MACH_GEMSTONE GEMSTONE 1039
-+pronghorn_metro MACH_PRONGHORNMETRO PRONGHORNMETRO 1040
-+sidewinder MACH_SIDEWINDER SIDEWINDER 1041
-+picomod1 MACH_PICOMOD1 PICOMOD1 1042
-+sg590 MACH_SG590 SG590 1043
-+akai9307 MACH_AKAI9307 AKAI9307 1044
-+fontaine MACH_FONTAINE FONTAINE 1045
-+wombat MACH_WOMBAT WOMBAT 1046
-+acq300 MACH_ACQ300 ACQ300 1047
-+mod272 MACH_MOD_270 MOD_270 1048
-+vmc_vc0820 MACH_VC0820 VC0820 1049
-+ani_aim MACH_ANI_AIM ANI_AIM 1050
-+jellyfish MACH_JELLYFISH JELLYFISH 1051
-+amanita MACH_AMANITA AMANITA 1052
-+vlink MACH_VLINK VLINK 1053
-+dexflex MACH_DEXFLEX DEXFLEX 1054
-+eigen_ttq MACH_EIGEN_TTQ EIGEN_TTQ 1055
-+arcom_titan MACH_ARCOM_TITAN ARCOM_TITAN 1056
-+tabla MACH_TABLA TABLA 1057
-+mdirac3 MACH_MDIRAC3 MDIRAC3 1058
-+mrhfbp2 MACH_MRHFBP2 MRHFBP2 1059
-+at91rm9200rb MACH_AT91RM9200RB AT91RM9200RB 1060
-+ani_apm MACH_ANI_APM ANI_APM 1061
-+ella1 MACH_ELLA1 ELLA1 1062
-+inhand_pxa27x MACH_INHAND_PXA27X INHAND_PXA27X 1063
-+inhand_pxa25x MACH_INHAND_PXA25X INHAND_PXA25X 1064
-+empos_xm MACH_EMPOS_XM EMPOS_XM 1065
-+empos MACH_EMPOS EMPOS 1066
-+empos_tiny MACH_EMPOS_TINY EMPOS_TINY 1067
-+empos_sm MACH_EMPOS_SM EMPOS_SM 1068
-+egret MACH_EGRET EGRET 1069
-+ostrich MACH_OSTRICH OSTRICH 1070
-+n50 MACH_N50 N50 1071
-+ecbat91 MACH_ECBAT91 ECBAT91 1072
-+stareast MACH_STAREAST STAREAST 1073
-+dspg_dw MACH_DSPG_DW DSPG_DW 1074
-+onearm MACH_ONEARM ONEARM 1075
-+mrg110_6 MACH_MRG110_6 MRG110_6 1076
-+wrt300nv2 MACH_WRT300NV2 WRT300NV2 1077
-+xm_bulverde MACH_XM_BULVERDE XM_BULVERDE 1078
-+msm6100 MACH_MSM6100 MSM6100 1079
-+eti_b1 MACH_ETI_B1 ETI_B1 1080
-+za9l_series MACH_ZILOG_ZA9L ZILOG_ZA9L 1081
-+bit2440 MACH_BIT2440 BIT2440 1082
-+nbi MACH_NBI NBI 1083
-+smdk2443 MACH_SMDK2443 SMDK2443 1084
-+vdavinci MACH_VDAVINCI VDAVINCI 1085
-+atc6 MACH_ATC6 ATC6 1086
-+multmdw MACH_MULTMDW MULTMDW 1087
-+mba2440 MACH_MBA2440 MBA2440 1088
-+ecsd MACH_ECSD ECSD 1089
-+palmz31 MACH_PALMZ31 PALMZ31 1090
-+fsg MACH_FSG FSG 1091
-+razor101 MACH_RAZOR101 RAZOR101 1092
-+opera_tdm MACH_OPERA_TDM OPERA_TDM 1093
-+comcerto MACH_COMCERTO COMCERTO 1094
-+tb0319 MACH_TB0319 TB0319 1095
-+kws8000 MACH_KWS8000 KWS8000 1096
-+b2 MACH_B2 B2 1097
-+lcl54 MACH_LCL54 LCL54 1098
-+at91sam9260ek MACH_AT91SAM9260EK AT91SAM9260EK 1099
-+glantank MACH_GLANTANK GLANTANK 1100
-+n2100 MACH_N2100 N2100 1101
-+n4100 MACH_N4100 N4100 1102
-+rsc4 MACH_VERTICAL_RSC4 VERTICAL_RSC4 1103
-+sg8100 MACH_SG8100 SG8100 1104
-+im42xx MACH_IM42XX IM42XX 1105
-+ftxx MACH_FTXX FTXX 1106
-+lwfusion MACH_LWFUSION LWFUSION 1107
-+qt2410 MACH_QT2410 QT2410 1108
-+kixrp435 MACH_KIXRP435 KIXRP435 1109
-+ccw9c MACH_CCW9C CCW9C 1110
-+dabhs MACH_DABHS DABHS 1111
-+gzmx MACH_GZMX GZMX 1112
-+ipnw100ap MACH_IPNW100AP IPNW100AP 1113
-+cc9p9360dev MACH_CC9P9360DEV CC9P9360DEV 1114
-+cc9p9750dev MACH_CC9P9750DEV CC9P9750DEV 1115
-+cc9p9360val MACH_CC9P9360VAL CC9P9360VAL 1116
-+cc9p9750val MACH_CC9P9750VAL CC9P9750VAL 1117
-+nx70v MACH_NX70V NX70V 1118
-+at91rm9200df MACH_AT91RM9200DF AT91RM9200DF 1119
-+se_pilot2 MACH_SE_PILOT2 SE_PILOT2 1120
-+mtcn_t800 MACH_MTCN_T800 MTCN_T800 1121
-+vcmx212 MACH_VCMX212 VCMX212 1122
-+lynx MACH_LYNX LYNX 1123
-+at91sam9260id MACH_AT91SAM9260ID AT91SAM9260ID 1124
-+hw86052 MACH_HW86052 HW86052 1125
-+pilz_pmi3 MACH_PILZ_PMI3 PILZ_PMI3 1126
-+edb9302a MACH_EDB9302A EDB9302A 1127
-+edb9307a MACH_EDB9307A EDB9307A 1128
-+ct_dfs MACH_CT_DFS CT_DFS 1129
-+pilz_pmi4 MACH_PILZ_PMI4 PILZ_PMI4 1130
-+xceednp_ixp MACH_XCEEDNP_IXP XCEEDNP_IXP 1131
-+smdk2442b MACH_SMDK2442B SMDK2442B 1132
-+xnode MACH_XNODE XNODE 1133
-+aidx270 MACH_AIDX270 AIDX270 1134
-+rema MACH_REMA REMA 1135
-+bps1000 MACH_BPS1000 BPS1000 1136
-+hw90350 MACH_HW90350 HW90350 1137
-+omap_3430sdp MACH_OMAP_3430SDP OMAP_3430SDP 1138
-+bluetouch MACH_BLUETOUCH BLUETOUCH 1139
-+vstms MACH_VSTMS VSTMS 1140
-+xsbase270 MACH_XSBASE270 XSBASE270 1141
-+at91sam9260ek_cn MACH_AT91SAM9260EK_CN AT91SAM9260EK_CN 1142
-+adsturboxb MACH_ADSTURBOXB ADSTURBOXB 1143
-+oti4110 MACH_OTI4110 OTI4110 1144
-+hme_pxa MACH_HME_PXA HME_PXA 1145
-+deisterdca MACH_DEISTERDCA DEISTERDCA 1146
-+ces_ssem2 MACH_CES_SSEM2 CES_SSEM2 1147
-+ces_mtr MACH_CES_MTR CES_MTR 1148
-+tds_avng_sbc MACH_TDS_AVNG_SBC TDS_AVNG_SBC 1149
-+everest MACH_EVEREST EVEREST 1150
-+pnx4010 MACH_PNX4010 PNX4010 1151
-+oxnas MACH_OXNAS OXNAS 1152
-+fiori MACH_FIORI FIORI 1153
-+ml1200 MACH_ML1200 ML1200 1154
-+pecos MACH_PECOS PECOS 1155
-+nb2xxx MACH_NB2XXX NB2XXX 1156
-+hw6900 MACH_HW6900 HW6900 1157
-+cdcs_quoll MACH_CDCS_QUOLL CDCS_QUOLL 1158
-+quicksilver MACH_QUICKSILVER QUICKSILVER 1159
-+uplat926 MACH_UPLAT926 UPLAT926 1160
-+dep2410_dep2410 MACH_DEP2410_THOMAS DEP2410_THOMAS 1161
-+dtk2410 MACH_DTK2410 DTK2410 1162
-+chili MACH_CHILI CHILI 1163
-+demeter MACH_DEMETER DEMETER 1164
-+dionysus MACH_DIONYSUS DIONYSUS 1165
-+as352x MACH_AS352X AS352X 1166
-+service MACH_SERVICE SERVICE 1167
-+cs_e9301 MACH_CS_E9301 CS_E9301 1168
-+micro9m MACH_MICRO9M MICRO9M 1169
-+ia_mospck MACH_IA_MOSPCK IA_MOSPCK 1170
-+ql201b MACH_QL201B QL201B 1171
-+bbm MACH_BBM BBM 1174
-+exxx MACH_EXXX EXXX 1175
-+wma11b MACH_WMA11B WMA11B 1176
-+pelco_atlas MACH_PELCO_ATLAS PELCO_ATLAS 1177
-+g500 MACH_G500 G500 1178
-+bug MACH_BUG BUG 1179
-+mx33ads MACH_MX33ADS MX33ADS 1180
-+chub MACH_CHUB CHUB 1181
-+neo1973_gta01 MACH_NEO1973_GTA01 NEO1973_GTA01 1182
-+w90n740 MACH_W90N740 W90N740 1183
-+medallion_sa2410 MACH_MEDALLION_SA2410 MEDALLION_SA2410 1184
-+ia_cpu_9200_2 MACH_IA_CPU_9200_2 IA_CPU_9200_2 1185
-+dimmrm9200 MACH_DIMMRM9200 DIMMRM9200 1186
-+pm9261 MACH_PM9261 PM9261 1187
-+ml7304 MACH_ML7304 ML7304 1189
-+ucp250 MACH_UCP250 UCP250 1190
-+intboard MACH_INTBOARD INTBOARD 1191
-+gulfstream MACH_GULFSTREAM GULFSTREAM 1192
-+labquest MACH_LABQUEST LABQUEST 1193
-+vcmx313 MACH_VCMX313 VCMX313 1194
-+urg200 MACH_URG200 URG200 1195
-+cpux255lcdnet MACH_CPUX255LCDNET CPUX255LCDNET 1196
-+netdcu9 MACH_NETDCU9 NETDCU9 1197
-+netdcu10 MACH_NETDCU10 NETDCU10 1198
-+dspg_dga MACH_DSPG_DGA DSPG_DGA 1199
-+dspg_dvw MACH_DSPG_DVW DSPG_DVW 1200
-+solos MACH_SOLOS SOLOS 1201
-+at91sam9263ek MACH_AT91SAM9263EK AT91SAM9263EK 1202
-+osstbox MACH_OSSTBOX OSSTBOX 1203
-+kbat9261 MACH_KBAT9261 KBAT9261 1204
-+ct1100 MACH_CT1100 CT1100 1205
-+akcppxa MACH_AKCPPXA AKCPPXA 1206
-+ochaya1020 MACH_OCHAYA1020 OCHAYA1020 1207
-+hitrack MACH_HITRACK HITRACK 1208
-+syme1 MACH_SYME1 SYME1 1209
-+syhl1 MACH_SYHL1 SYHL1 1210
-+empca400 MACH_EMPCA400 EMPCA400 1211
-+em7210 MACH_EM7210 EM7210 1212
-+htchermes MACH_HTCHERMES HTCHERMES 1213
-+eti_c1 MACH_ETI_C1 ETI_C1 1214
-+ac100 MACH_AC100 AC100 1216
-+sneetch MACH_SNEETCH SNEETCH 1217
-+studentmate MACH_STUDENTMATE STUDENTMATE 1218
-+zir2410 MACH_ZIR2410 ZIR2410 1219
-+zir2413 MACH_ZIR2413 ZIR2413 1220
-+dlonip3 MACH_DLONIP3 DLONIP3 1221
-+instream MACH_INSTREAM INSTREAM 1222
-+ambarella MACH_AMBARELLA AMBARELLA 1223
-+nevis MACH_NEVIS NEVIS 1224
-+htc_trinity MACH_HTC_TRINITY HTC_TRINITY 1225
-+ql202b MACH_QL202B QL202B 1226
-+vpac270 MACH_VPAC270 VPAC270 1227
-+rd129 MACH_RD129 RD129 1228
-+htcwizard MACH_HTCWIZARD HTCWIZARD 1229
-+treo680 MACH_TREO680 TREO680 1230
-+tecon_tmezon MACH_TECON_TMEZON TECON_TMEZON 1231
-+zylonite MACH_ZYLONITE ZYLONITE 1233
-+gene1270 MACH_GENE1270 GENE1270 1234
-+zir2412 MACH_ZIR2412 ZIR2412 1235
-+mx31lite MACH_MX31LITE MX31LITE 1236
-+t700wx MACH_T700WX T700WX 1237
-+vf100 MACH_VF100 VF100 1238
-+nsb2 MACH_NSB2 NSB2 1239
-+nxhmi_bb MACH_NXHMI_BB NXHMI_BB 1240
-+nxhmi_re MACH_NXHMI_RE NXHMI_RE 1241
-+n4100pro MACH_N4100PRO N4100PRO 1242
-+sam9260 MACH_SAM9260 SAM9260 1243
-+omap_treo600 MACH_OMAP_TREO600 OMAP_TREO600 1244
-+indy2410 MACH_INDY2410 INDY2410 1245
-+nelt_a MACH_NELT_A NELT_A 1246
-+n311 MACH_N311 N311 1248
-+at91sam9260vgk MACH_AT91SAM9260VGK AT91SAM9260VGK 1249
-+at91leppe MACH_AT91LEPPE AT91LEPPE 1250
-+at91lepccn MACH_AT91LEPCCN AT91LEPCCN 1251
-+apc7100 MACH_APC7100 APC7100 1252
-+stargazer MACH_STARGAZER STARGAZER 1253
-+sonata MACH_SONATA SONATA 1254
-+schmoogie MACH_SCHMOOGIE SCHMOOGIE 1255
-+aztool MACH_AZTOOL AZTOOL 1256
-+mioa701 MACH_MIOA701 MIOA701 1257
-+sxni9260 MACH_SXNI9260 SXNI9260 1258
-+mxc27520evb MACH_MXC27520EVB MXC27520EVB 1259
-+armadillo5x0 MACH_ARMADILLO5X0 ARMADILLO5X0 1260
-+mb9260 MACH_MB9260 MB9260 1261
-+mb9263 MACH_MB9263 MB9263 1262
-+ipac9302 MACH_IPAC9302 IPAC9302 1263
-+cc9p9360js MACH_CC9P9360JS CC9P9360JS 1264
-+gallium MACH_GALLIUM GALLIUM 1265
-+msc2410 MACH_MSC2410 MSC2410 1266
-+ghi270 MACH_GHI270 GHI270 1267
-+davinci_leonardo MACH_DAVINCI_LEONARDO DAVINCI_LEONARDO 1268
-+oiab MACH_OIAB OIAB 1269
-+smdk6400 MACH_SMDK6400 SMDK6400 1270
-+nokia_n800 MACH_NOKIA_N800 NOKIA_N800 1271
-+greenphone MACH_GREENPHONE GREENPHONE 1272
-+compex42x MACH_COMPEXWP18 COMPEXWP18 1273
-+xmate MACH_XMATE XMATE 1274
-+energizer MACH_ENERGIZER ENERGIZER 1275
-+ime1 MACH_IME1 IME1 1276
-+sweda_tms MACH_SWEDATMS SWEDATMS 1277
-+ntnp435c MACH_NTNP435C NTNP435C 1278
-+spectro2 MACH_SPECTRO2 SPECTRO2 1279
-+h6039 MACH_H6039 H6039 1280
-+ep80219 MACH_EP80219 EP80219 1281
-+samoa_ii MACH_SAMOA_II SAMOA_II 1282
-+cwmxl MACH_CWMXL CWMXL 1283
-+as9200 MACH_AS9200 AS9200 1284
-+sfx1149 MACH_SFX1149 SFX1149 1285
-+navi010 MACH_NAVI010 NAVI010 1286
-+multmdp MACH_MULTMDP MULTMDP 1287
-+scb9520 MACH_SCB9520 SCB9520 1288
-+htcathena MACH_HTCATHENA HTCATHENA 1289
-+xp179 MACH_XP179 XP179 1290
-+h4300 MACH_H4300 H4300 1291
-+goramo_mlr MACH_GORAMO_MLR GORAMO_MLR 1292
-+mxc30020evb MACH_MXC30020EVB MXC30020EVB 1293
-+adsbitsyg5 MACH_ADSBITSYG5 ADSBITSYG5 1294
-+adsportalplus MACH_ADSPORTALPLUS ADSPORTALPLUS 1295
-+mmsp2plus MACH_MMSP2PLUS MMSP2PLUS 1296
-+em_x270 MACH_EM_X270 EM_X270 1297
-+tpp302 MACH_TPP302 TPP302 1298
-+tpp104 MACH_TPM104 TPM104 1299
-+tpm102 MACH_TPM102 TPM102 1300
-+tpm109 MACH_TPM109 TPM109 1301
-+fbxo1 MACH_FBXO1 FBXO1 1302
-+hxd8 MACH_HXD8 HXD8 1303
-+neo1973_gta02 MACH_NEO1973_GTA02 NEO1973_GTA02 1304
-+emtest MACH_EMTEST EMTEST 1305
-+ad6900 MACH_AD6900 AD6900 1306
-+europa MACH_EUROPA EUROPA 1307
-+metroconnect MACH_METROCONNECT METROCONNECT 1308
-+ez_s2410 MACH_EZ_S2410 EZ_S2410 1309
-+ez_s2440 MACH_EZ_S2440 EZ_S2440 1310
-+ez_ep9312 MACH_EZ_EP9312 EZ_EP9312 1311
-+ez_ep9315 MACH_EZ_EP9315 EZ_EP9315 1312
-+ez_x7 MACH_EZ_X7 EZ_X7 1313
-+godotdb MACH_GODOTDB GODOTDB 1314
-+mistral MACH_MISTRAL MISTRAL 1315
-+msm MACH_MSM MSM 1316
-+ct5910 MACH_CT5910 CT5910 1317
-+ct5912 MACH_CT5912 CT5912 1318
-+hynet_ine MACH_HYNET_INE HYNET_INE 1319
-+hynet_app MACH_HYNET_APP HYNET_APP 1320
-+msm7200 MACH_MSM7200 MSM7200 1321
-+msm7600 MACH_MSM7600 MSM7600 1322
-+ceb255 MACH_CEB255 CEB255 1323
-+ciel MACH_CIEL CIEL 1324
-+slm5650 MACH_SLM5650 SLM5650 1325
-+at91sam9rlek MACH_AT91SAM9RLEK AT91SAM9RLEK 1326
-+comtech_router MACH_COMTECH_ROUTER COMTECH_ROUTER 1327
-+sbc2410x MACH_SBC2410X SBC2410X 1328
-+at4x0bd MACH_AT4X0BD AT4X0BD 1329
-+cbifr MACH_CBIFR CBIFR 1330
-+arcom_quantum MACH_ARCOM_QUANTUM ARCOM_QUANTUM 1331
-+matrix520 MACH_MATRIX520 MATRIX520 1332
-+matrix510 MACH_MATRIX510 MATRIX510 1333
-+matrix500 MACH_MATRIX500 MATRIX500 1334
-+m501 MACH_M501 M501 1335
-+aaeon1270 MACH_AAEON1270 AAEON1270 1336
-+matrix500ev MACH_MATRIX500EV MATRIX500EV 1337
-+pac500 MACH_PAC500 PAC500 1338
-+pnx8181 MACH_PNX8181 PNX8181 1339
-+colibri320 MACH_COLIBRI320 COLIBRI320 1340
-+aztoolbb MACH_AZTOOLBB AZTOOLBB 1341
-+aztoolg2 MACH_AZTOOLG2 AZTOOLG2 1342
-+dvlhost MACH_DVLHOST DVLHOST 1343
-+zir9200 MACH_ZIR9200 ZIR9200 1344
-+zir9260 MACH_ZIR9260 ZIR9260 1345
-+cocopah MACH_COCOPAH COCOPAH 1346
-+nds MACH_NDS NDS 1347
-+rosencrantz MACH_ROSENCRANTZ ROSENCRANTZ 1348
-+fttx_odsc MACH_FTTX_ODSC FTTX_ODSC 1349
-+classe_r6904 MACH_CLASSE_R6904 CLASSE_R6904 1350
-+cam60 MACH_CAM60 CAM60 1351
-+mxc30031ads MACH_MXC30031ADS MXC30031ADS 1352
-+datacall MACH_DATACALL DATACALL 1353
-+at91eb01 MACH_AT91EB01 AT91EB01 1354
-+rty MACH_RTY RTY 1355
-+dwl2100 MACH_DWL2100 DWL2100 1356
-+vinsi MACH_VINSI VINSI 1357
-+db88f5281 MACH_DB88F5281 DB88F5281 1358
-+csb726 MACH_CSB726 CSB726 1359
-+tik27 MACH_TIK27 TIK27 1360
-+mx_uc7420 MACH_MX_UC7420 MX_UC7420 1361
-+rirm3 MACH_RIRM3 RIRM3 1362
-+pelco_odyssey MACH_PELCO_ODYSSEY PELCO_ODYSSEY 1363
-+adx_abox MACH_ADX_ABOX ADX_ABOX 1365
-+adx_tpid MACH_ADX_TPID ADX_TPID 1366
-+minicheck MACH_MINICHECK MINICHECK 1367
-+idam MACH_IDAM IDAM 1368
-+mario_mx MACH_MARIO_MX MARIO_MX 1369
-+vi1888 MACH_VI1888 VI1888 1370
-+zr4230 MACH_ZR4230 ZR4230 1371
-+t1_ix_blue MACH_T1_IX_BLUE T1_IX_BLUE 1372
-+syhq2 MACH_SYHQ2 SYHQ2 1373
-+computime_r3 MACH_COMPUTIME_R3 COMPUTIME_R3 1374
-+oratis MACH_ORATIS ORATIS 1375
-+mikko MACH_MIKKO MIKKO 1376
-+holon MACH_HOLON HOLON 1377
-+olip8 MACH_OLIP8 OLIP8 1378
-+ghi270hg MACH_GHI270HG GHI270HG 1379
-+davinci_dm6467_evm MACH_DAVINCI_DM6467_EVM DAVINCI_DM6467_EVM 1380
-+davinci_dm355_evm MACH_DAVINCI_DM355_EVM DAVINCI_DM355_EVM 1381
-+blackriver MACH_BLACKRIVER BLACKRIVER 1383
-+sandgate_wp MACH_SANDGATEWP SANDGATEWP 1384
-+cdotbwsg MACH_CDOTBWSG CDOTBWSG 1385
-+quark963 MACH_QUARK963 QUARK963 1386
-+csb735 MACH_CSB735 CSB735 1387
-+littleton MACH_LITTLETON LITTLETON 1388
-+mio_p550 MACH_MIO_P550 MIO_P550 1389
-+motion2440 MACH_MOTION2440 MOTION2440 1390
-+imm500 MACH_IMM500 IMM500 1391
-+homematic MACH_HOMEMATIC HOMEMATIC 1392
-+ermine MACH_ERMINE ERMINE 1393
-+kb9202b MACH_KB9202B KB9202B 1394
-+hs1xx MACH_HS1XX HS1XX 1395
-+studentmate2440 MACH_STUDENTMATE2440 STUDENTMATE2440 1396
-+arvoo_l1_z1 MACH_ARVOO_L1_Z1 ARVOO_L1_Z1 1397
-+dep2410k MACH_DEP2410K DEP2410K 1398
-+xxsvideo MACH_XXSVIDEO XXSVIDEO 1399
-+im4004 MACH_IM4004 IM4004 1400
-+ochaya1050 MACH_OCHAYA1050 OCHAYA1050 1401
-+lep9261 MACH_LEP9261 LEP9261 1402
-+svenmeb MACH_SVENMEB SVENMEB 1403
-+fortunet2ne MACH_FORTUNET2NE FORTUNET2NE 1404
-+nxhx MACH_NXHX NXHX 1406
-+realview_pb11mp MACH_REALVIEW_PB11MP REALVIEW_PB11MP 1407
-+ids500 MACH_IDS500 IDS500 1408
-+ors_n725 MACH_ORS_N725 ORS_N725 1409
-+hsdarm MACH_HSDARM HSDARM 1410
-+sha_pon003 MACH_SHA_PON003 SHA_PON003 1411
-+sha_pon004 MACH_SHA_PON004 SHA_PON004 1412
-+sha_pon007 MACH_SHA_PON007 SHA_PON007 1413
-+sha_pon011 MACH_SHA_PON011 SHA_PON011 1414
-+h6042 MACH_H6042 H6042 1415
-+h6043 MACH_H6043 H6043 1416
-+looxc550 MACH_LOOXC550 LOOXC550 1417
-+cnty_titan MACH_CNTY_TITAN CNTY_TITAN 1418
-+app3xx MACH_APP3XX APP3XX 1419
-+sideoatsgrama MACH_SIDEOATSGRAMA SIDEOATSGRAMA 1420
-+treo700p MACH_TREO700P TREO700P 1421
-+treo700w MACH_TREO700W TREO700W 1422
-+treo750 MACH_TREO750 TREO750 1423
-+treo755p MACH_TREO755P TREO755P 1424
-+ezreganut9200 MACH_EZREGANUT9200 EZREGANUT9200 1425
-+sarge MACH_SARGE SARGE 1426
-+a696 MACH_A696 A696 1427
-+turtle1916 MACH_TURTLE TURTLE 1428
-+mx27_3ds MACH_MX27_3DS MX27_3DS 1430
-+bishop MACH_BISHOP BISHOP 1431
-+pxx MACH_PXX PXX 1432
-+redwood MACH_REDWOOD REDWOOD 1433
-+omap_2430dlp MACH_OMAP_2430DLP OMAP_2430DLP 1436
-+omap_2430osk MACH_OMAP_2430OSK OMAP_2430OSK 1437
-+sardine MACH_SARDINE SARDINE 1438
-+halibut MACH_HALIBUT HALIBUT 1439
-+trout MACH_TROUT TROUT 1440
-+goldfish MACH_GOLDFISH GOLDFISH 1441
-+gesbc2440 MACH_GESBC2440 GESBC2440 1442
-+nomad MACH_NOMAD NOMAD 1443
-+rosalind MACH_ROSALIND ROSALIND 1444
-+cc9p9215 MACH_CC9P9215 CC9P9215 1445
-+cc9p9210 MACH_CC9P9210 CC9P9210 1446
-+cc9p9215js MACH_CC9P9215JS CC9P9215JS 1447
-+cc9p9210js MACH_CC9P9210JS CC9P9210JS 1448
-+nasffe MACH_NASFFE NASFFE 1449
-+tn2x0bd MACH_TN2X0BD TN2X0BD 1450
-+gwmpxa MACH_GWMPXA GWMPXA 1451
-+exyplus MACH_EXYPLUS EXYPLUS 1452
-+jadoo21 MACH_JADOO21 JADOO21 1453
-+looxn560 MACH_LOOXN560 LOOXN560 1454
-+bonsai MACH_BONSAI BONSAI 1455
-+adsmilgato MACH_ADSMILGATO ADSMILGATO 1456
-+gba MACH_GBA GBA 1457
-+h6044 MACH_H6044 H6044 1458
-+app MACH_APP APP 1459
-+tct_hammer MACH_TCT_HAMMER TCT_HAMMER 1460
-+herald MACH_HERALD HERALD 1461
-+artemis MACH_ARTEMIS ARTEMIS 1462
-+htctitan MACH_HTCTITAN HTCTITAN 1463
-+qranium MACH_QRANIUM QRANIUM 1464
-+adx_wsc2 MACH_ADX_WSC2 ADX_WSC2 1465
-+adx_medcom MACH_ADX_MEDCOM ADX_MEDCOM 1466
-+bboard MACH_BBOARD BBOARD 1467
-+cambria MACH_CAMBRIA CAMBRIA 1468
-+mt7xxx MACH_MT7XXX MT7XXX 1469
-+matrix512 MACH_MATRIX512 MATRIX512 1470
-+matrix522 MACH_MATRIX522 MATRIX522 1471
-+ipac5010 MACH_IPAC5010 IPAC5010 1472
-+sakura MACH_SAKURA SAKURA 1473
-+grocx MACH_GROCX GROCX 1474
-+pm9263 MACH_PM9263 PM9263 1475
-+sim_one MACH_SIM_ONE SIM_ONE 1476
-+acq132 MACH_ACQ132 ACQ132 1477
-+datr MACH_DATR DATR 1478
-+actux1 MACH_ACTUX1 ACTUX1 1479
-+actux2 MACH_ACTUX2 ACTUX2 1480
-+actux3 MACH_ACTUX3 ACTUX3 1481
-+flexit MACH_FLEXIT FLEXIT 1482
-+bh2x0bd MACH_BH2X0BD BH2X0BD 1483
-+atb2002 MACH_ATB2002 ATB2002 1484
-+xenon MACH_XENON XENON 1485
-+fm607 MACH_FM607 FM607 1486
-+matrix514 MACH_MATRIX514 MATRIX514 1487
-+matrix524 MACH_MATRIX524 MATRIX524 1488
-+inpod MACH_INPOD INPOD 1489
-+jive MACH_JIVE JIVE 1490
-+tll_mx21 MACH_TLL_MX21 TLL_MX21 1491
-+sbc2800 MACH_SBC2800 SBC2800 1492
-+cc7ucamry MACH_CC7UCAMRY CC7UCAMRY 1493
-+ubisys_p9_sc15 MACH_UBISYS_P9_SC15 UBISYS_P9_SC15 1494
-+ubisys_p9_ssc2d10 MACH_UBISYS_P9_SSC2D10 UBISYS_P9_SSC2D10 1495
-+ubisys_p9_rcu3 MACH_UBISYS_P9_RCU3 UBISYS_P9_RCU3 1496
-+aml_m8000 MACH_AML_M8000 AML_M8000 1497
-+snapper_270 MACH_SNAPPER_270 SNAPPER_270 1498
-+omap_bbx MACH_OMAP_BBX OMAP_BBX 1499
-+ucn2410 MACH_UCN2410 UCN2410 1500
-+sam9_l9260 MACH_SAM9_L9260 SAM9_L9260 1501
-+eti_c2 MACH_ETI_C2 ETI_C2 1502
-+avalanche MACH_AVALANCHE AVALANCHE 1503
-+realview_pb1176 MACH_REALVIEW_PB1176 REALVIEW_PB1176 1504
-+dp1500 MACH_DP1500 DP1500 1505
-+apple_iphone MACH_APPLE_IPHONE APPLE_IPHONE 1506
-+yl9200 MACH_YL9200 YL9200 1507
-+rd88f5182 MACH_RD88F5182 RD88F5182 1508
-+kurobox_pro MACH_KUROBOX_PRO KUROBOX_PRO 1509
-+se_poet MACH_SE_POET SE_POET 1510
-+mx31_3ds MACH_MX31_3DS MX31_3DS 1511
-+r270 MACH_R270 R270 1512
-+armour21 MACH_ARMOUR21 ARMOUR21 1513
-+dt2 MACH_DT2 DT2 1514
-+vt4 MACH_VT4 VT4 1515
-+tyco320 MACH_TYCO320 TYCO320 1516
-+adma MACH_ADMA ADMA 1517
-+wp188 MACH_WP188 WP188 1518
-+corsica MACH_CORSICA CORSICA 1519
-+bigeye MACH_BIGEYE BIGEYE 1520
-+tll5000 MACH_TLL5000 TLL5000 1522
-+bebot MACH_BEBOT BEBOT 1523
-+qong MACH_QONG QONG 1524
-+tcompact MACH_TCOMPACT TCOMPACT 1525
-+puma5 MACH_PUMA5 PUMA5 1526
-+elara MACH_ELARA ELARA 1527
-+ellington MACH_ELLINGTON ELLINGTON 1528
-+xda_atom MACH_XDA_ATOM XDA_ATOM 1529
-+energizer2 MACH_ENERGIZER2 ENERGIZER2 1530
-+odin MACH_ODIN ODIN 1531
-+actux4 MACH_ACTUX4 ACTUX4 1532
-+esl_omap MACH_ESL_OMAP ESL_OMAP 1533
-+omap2evm MACH_OMAP2EVM OMAP2EVM 1534
-+omap3evm MACH_OMAP3EVM OMAP3EVM 1535
-+adx_pcu57 MACH_ADX_PCU57 ADX_PCU57 1536
-+monaco MACH_MONACO MONACO 1537
-+levante MACH_LEVANTE LEVANTE 1538
-+tmxipx425 MACH_TMXIPX425 TMXIPX425 1539
-+leep MACH_LEEP LEEP 1540
-+raad MACH_RAAD RAAD 1541
-+dns323 MACH_DNS323 DNS323 1542
-+ap1000 MACH_AP1000 AP1000 1543
-+a9sam6432 MACH_A9SAM6432 A9SAM6432 1544
-+shiny MACH_SHINY SHINY 1545
-+omap3_beagle MACH_OMAP3_BEAGLE OMAP3_BEAGLE 1546
-+csr_bdb2 MACH_CSR_BDB2 CSR_BDB2 1547
-+nokia_n810 MACH_NOKIA_N810 NOKIA_N810 1548
-+c270 MACH_C270 C270 1549
-+sentry MACH_SENTRY SENTRY 1550
-+pcm038 MACH_PCM038 PCM038 1551
-+anc300 MACH_ANC300 ANC300 1552
-+htckaiser MACH_HTCKAISER HTCKAISER 1553
-+sbat100 MACH_SBAT100 SBAT100 1554
-+modunorm MACH_MODUNORM MODUNORM 1555
-+pelos_twarm MACH_PELOS_TWARM PELOS_TWARM 1556
-+flank MACH_FLANK FLANK 1557
-+sirloin MACH_SIRLOIN SIRLOIN 1558
-+brisket MACH_BRISKET BRISKET 1559
-+chuck MACH_CHUCK CHUCK 1560
-+otter MACH_OTTER OTTER 1561
-+davinci_ldk MACH_DAVINCI_LDK DAVINCI_LDK 1562
-+phreedom MACH_PHREEDOM PHREEDOM 1563
-+sg310 MACH_SG310 SG310 1564
-+ts_x09 MACH_TS209 TS209 1565
-+at91cap9adk MACH_AT91CAP9ADK AT91CAP9ADK 1566
-+tion9315 MACH_TION9315 TION9315 1567
-+mast MACH_MAST MAST 1568
-+pfw MACH_PFW PFW 1569
-+yl_p2440 MACH_YL_P2440 YL_P2440 1570
-+zsbc32 MACH_ZSBC32 ZSBC32 1571
-+omap_pace2 MACH_OMAP_PACE2 OMAP_PACE2 1572
-+imx_pace2 MACH_IMX_PACE2 IMX_PACE2 1573
-+mx31moboard MACH_MX31MOBOARD MX31MOBOARD 1574
-+mx37_3ds MACH_MX37_3DS MX37_3DS 1575
-+rcc MACH_RCC RCC 1576
-+dmp MACH_ARM9 ARM9 1577
-+vision_ep9307 MACH_VISION_EP9307 VISION_EP9307 1578
-+scly1000 MACH_SCLY1000 SCLY1000 1579
-+fontel_ep MACH_FONTEL_EP FONTEL_EP 1580
-+voiceblue3g MACH_VOICEBLUE3G VOICEBLUE3G 1581
-+tt9200 MACH_TT9200 TT9200 1582
-+digi2410 MACH_DIGI2410 DIGI2410 1583
-+terastation_pro2 MACH_TERASTATION_PRO2 TERASTATION_PRO2 1584
-+linkstation_pro MACH_LINKSTATION_PRO LINKSTATION_PRO 1585
-+motorola_a780 MACH_MOTOROLA_A780 MOTOROLA_A780 1587
-+motorola_e6 MACH_MOTOROLA_E6 MOTOROLA_E6 1588
-+motorola_e2 MACH_MOTOROLA_E2 MOTOROLA_E2 1589
-+motorola_e680 MACH_MOTOROLA_E680 MOTOROLA_E680 1590
-+ur2410 MACH_UR2410 UR2410 1591
-+tas9261 MACH_TAS9261 TAS9261 1592
-+davinci_hermes_hd MACH_HERMES_HD HERMES_HD 1593
-+davinci_perseo_hd MACH_PERSEO_HD PERSEO_HD 1594
-+stargazer2 MACH_STARGAZER2 STARGAZER2 1595
-+e350 MACH_E350 E350 1596
-+wpcm450 MACH_WPCM450 WPCM450 1597
-+cartesio MACH_CARTESIO CARTESIO 1598
-+toybox MACH_TOYBOX TOYBOX 1599
-+tx27 MACH_TX27 TX27 1600
-+ts409 MACH_TS409 TS409 1601
-+p300 MACH_P300 P300 1602
-+xdacomet MACH_XDACOMET XDACOMET 1603
-+dexflex2 MACH_DEXFLEX2 DEXFLEX2 1604
-+ow MACH_OW OW 1605
-+armebs3 MACH_ARMEBS3 ARMEBS3 1606
-+u3 MACH_U3 U3 1607
-+smdk2450 MACH_SMDK2450 SMDK2450 1608
-+rsi_ews MACH_RSI_EWS RSI_EWS 1609
-+tnb MACH_TNB TNB 1610
-+toepath MACH_TOEPATH TOEPATH 1611
-+kb9263 MACH_KB9263 KB9263 1612
-+mt7108 MACH_MT7108 MT7108 1613
-+smtr2440 MACH_SMTR2440 SMTR2440 1614
-+manao MACH_MANAO MANAO 1615
-+cm_x300 MACH_CM_X300 CM_X300 1616
-+gulfstream_kp MACH_GULFSTREAM_KP GULFSTREAM_KP 1617
-+lanreadyfn522 MACH_LANREADYFN522 LANREADYFN522 1618
-+arma37 MACH_ARMA37 ARMA37 1619
-+mendel MACH_MENDEL MENDEL 1620
-+pelco_iliad MACH_PELCO_ILIAD PELCO_ILIAD 1621
-+unit2p MACH_UNIT2P UNIT2P 1622
-+inc20otter MACH_INC20OTTER INC20OTTER 1623
-+at91sam9g20ek MACH_AT91SAM9G20EK AT91SAM9G20EK 1624
-+sc_ge2 MACH_STORCENTER STORCENTER 1625
-+smdk6410 MACH_SMDK6410 SMDK6410 1626
-+u300 MACH_U300 U300 1627
-+u500 MACH_U500 U500 1628
-+ds9260 MACH_DS9260 DS9260 1629
-+riverrock MACH_RIVERROCK RIVERROCK 1630
-+scibath MACH_SCIBATH SCIBATH 1631
-+at91sam7se MACH_AT91SAM7SE512EK AT91SAM7SE512EK 1632
-+wrt350n_v2 MACH_WRT350N_V2 WRT350N_V2 1633
-+multimedia MACH_MULTIMEDIA MULTIMEDIA 1634
-+marvin MACH_MARVIN MARVIN 1635
-+x500 MACH_X500 X500 1636
-+awlug4lcu MACH_AWLUG4LCU AWLUG4LCU 1637
-+palermoc MACH_PALERMOC PALERMOC 1638
-+omap_ldp MACH_OMAP_LDP OMAP_LDP 1639
-+ip500 MACH_IP500 IP500 1640
-+ase2 MACH_ASE2 ASE2 1642
-+mx35evb MACH_MX35EVB MX35EVB 1643
-+aml_m8050 MACH_AML_M8050 AML_M8050 1644
-+mx35_3ds MACH_MX35_3DS MX35_3DS 1645
-+mars MACH_MARS MARS 1646
-+neuros_osd2 MACH_NEUROS_OSD2 NEUROS_OSD2 1647
-+badger MACH_BADGER BADGER 1648
-+trizeps4wl MACH_TRIZEPS4WL TRIZEPS4WL 1649
-+trizeps5 MACH_TRIZEPS5 TRIZEPS5 1650
-+marlin MACH_MARLIN MARLIN 1651
-+ts78xx MACH_TS78XX TS78XX 1652
-+hpipaq214 MACH_HPIPAQ214 HPIPAQ214 1653
-+at572d940dcm MACH_AT572D940DCM AT572D940DCM 1654
-+ne1board MACH_NE1BOARD NE1BOARD 1655
-+zante MACH_ZANTE ZANTE 1656
-+sffsdr MACH_SFFSDR SFFSDR 1657
-+tw2662 MACH_TW2662 TW2662 1658
-+vf10xx MACH_VF10XX VF10XX 1659
-+zoran43xx MACH_ZORAN43XX ZORAN43XX 1660
-+sonix926 MACH_SONIX926 SONIX926 1661
-+celestialsemi MACH_CELESTIALSEMI CELESTIALSEMI 1662
-+cc9m2443js MACH_CC9M2443JS CC9M2443JS 1663
-+tw5334 MACH_TW5334 TW5334 1664
-+omap_htcartemis MACH_HTCARTEMIS HTCARTEMIS 1665
-+nal_hlite MACH_NAL_HLITE NAL_HLITE 1666
-+htcvogue MACH_HTCVOGUE HTCVOGUE 1667
-+smartweb MACH_SMARTWEB SMARTWEB 1668
-+mv86xx MACH_MV86XX MV86XX 1669
-+mv87xx MACH_MV87XX MV87XX 1670
-+songyoungho MACH_SONGYOUNGHO SONGYOUNGHO 1671
-+younghotema MACH_YOUNGHOTEMA YOUNGHOTEMA 1672
-+pcm037 MACH_PCM037 PCM037 1673
-+mmvp MACH_MMVP MMVP 1674
-+mmap MACH_MMAP MMAP 1675
-+ptid2410 MACH_PTID2410 PTID2410 1676
-+james_926 MACH_JAMES_926 JAMES_926 1677
-+fm6000 MACH_FM6000 FM6000 1678
-+db88f6281_bp MACH_DB88F6281_BP DB88F6281_BP 1680
-+rd88f6192_nas MACH_RD88F6192_NAS RD88F6192_NAS 1681
-+rd88f6281 MACH_RD88F6281 RD88F6281 1682
-+db78x00_bp MACH_DB78X00_BP DB78X00_BP 1683
-+smdk2416 MACH_SMDK2416 SMDK2416 1685
-+oce_spider_si MACH_OCE_SPIDER_SI OCE_SPIDER_SI 1686
-+oce_spider_sk MACH_OCE_SPIDER_SK OCE_SPIDER_SK 1687
-+rovern6 MACH_ROVERN6 ROVERN6 1688
-+pelco_evolution MACH_PELCO_EVOLUTION PELCO_EVOLUTION 1689
-+wbd111 MACH_WBD111 WBD111 1690
-+elaracpe MACH_ELARACPE ELARACPE 1691
-+mabv3 MACH_MABV3 MABV3 1692
-+mv2120 MACH_MV2120 MV2120 1693
-+csb737 MACH_CSB737 CSB737 1695
-+mx51_3ds MACH_MX51_3DS MX51_3DS 1696
-+g900 MACH_G900 G900 1697
-+apf27 MACH_APF27 APF27 1698
-+ggus2000 MACH_GGUS2000 GGUS2000 1699
-+omap_2430_mimic MACH_OMAP_2430_MIMIC OMAP_2430_MIMIC 1700
-+imx27lite MACH_IMX27LITE IMX27LITE 1701
-+almex MACH_ALMEX ALMEX 1702
-+control MACH_CONTROL CONTROL 1703
-+mba2410 MACH_MBA2410 MBA2410 1704
-+volcano MACH_VOLCANO VOLCANO 1705
-+zenith MACH_ZENITH ZENITH 1706
-+muchip MACH_MUCHIP MUCHIP 1707
-+magellan MACH_MAGELLAN MAGELLAN 1708
-+usb_a9260 MACH_USB_A9260 USB_A9260 1709
-+usb_a9263 MACH_USB_A9263 USB_A9263 1710
-+qil_a9260 MACH_QIL_A9260 QIL_A9260 1711
-+cme9210 MACH_CME9210 CME9210 1712
-+hczh4 MACH_HCZH4 HCZH4 1713
-+spearbasic MACH_SPEARBASIC SPEARBASIC 1714
-+dep2440 MACH_DEP2440 DEP2440 1715
-+hdl_gxr MACH_HDL_GXR HDL_GXR 1716
-+hdl_gt MACH_HDL_GT HDL_GT 1717
-+hdl_4g MACH_HDL_4G HDL_4G 1718
-+s3c6000 MACH_S3C6000 S3C6000 1719
-+mmsp2_mdk MACH_MMSP2_MDK MMSP2_MDK 1720
-+mpx220 MACH_MPX220 MPX220 1721
-+kzm_arm11_01 MACH_KZM_ARM11_01 KZM_ARM11_01 1722
-+htc_polaris MACH_HTC_POLARIS HTC_POLARIS 1723
-+htc_kaiser MACH_HTC_KAISER HTC_KAISER 1724
-+lg_ks20 MACH_LG_KS20 LG_KS20 1725
-+hhgps MACH_HHGPS HHGPS 1726
-+nokia_n810_wimax MACH_NOKIA_N810_WIMAX NOKIA_N810_WIMAX 1727
-+insight MACH_INSIGHT INSIGHT 1728
-+sapphire MACH_SAPPHIRE SAPPHIRE 1729
-+csb637xo MACH_CSB637XO CSB637XO 1730
-+evisiong MACH_EVISIONG EVISIONG 1731
-+stmp37xx MACH_STMP37XX STMP37XX 1732
-+stmp378x MACH_STMP378X STMP378X 1733
-+tnt MACH_TNT TNT 1734
-+tbxt MACH_TBXT TBXT 1735
-+playmate MACH_PLAYMATE PLAYMATE 1736
-+pns10 MACH_PNS10 PNS10 1737
-+eznavi MACH_EZNAVI EZNAVI 1738
-+ps4000 MACH_PS4000 PS4000 1739
-+ezx_a780 MACH_EZX_A780 EZX_A780 1740
-+ezx_e680 MACH_EZX_E680 EZX_E680 1741
-+ezx_a1200 MACH_EZX_A1200 EZX_A1200 1742
-+ezx_e6 MACH_EZX_E6 EZX_E6 1743
-+ezx_e2 MACH_EZX_E2 EZX_E2 1744
-+ezx_a910 MACH_EZX_A910 EZX_A910 1745
-+cwmx31 MACH_CWMX31 CWMX31 1746
-+sl2312 MACH_SL2312 SL2312 1747
-+blenny MACH_BLENNY BLENNY 1748
-+ds107 MACH_DS107 DS107 1749
-+dsx07 MACH_DSX07 DSX07 1750
-+picocom1 MACH_PICOCOM1 PICOCOM1 1751
-+lynx_wolverine MACH_LYNX_WOLVERINE LYNX_WOLVERINE 1752
-+ubisys_p9_sc19 MACH_UBISYS_P9_SC19 UBISYS_P9_SC19 1753
-+kratos_low MACH_KRATOS_LOW KRATOS_LOW 1754
-+m700 MACH_M700 M700 1755
-+edmini_v2 MACH_EDMINI_V2 EDMINI_V2 1756
-+zipit2 MACH_ZIPIT2 ZIPIT2 1757
-+hslfemtocell MACH_HSLFEMTOCELL HSLFEMTOCELL 1758
-+daintree_at91 MACH_DAINTREE_AT91 DAINTREE_AT91 1759
-+sg560usb MACH_SG560USB SG560USB 1760
-+omap3_pandora MACH_OMAP3_PANDORA OMAP3_PANDORA 1761
-+usr8200 MACH_USR8200 USR8200 1762
-+s1s65k MACH_S1S65K S1S65K 1763
-+s2s65a MACH_S2S65A S2S65A 1764
-+icore MACH_ICORE ICORE 1765
-+mss2 MACH_MSS2 MSS2 1766
-+belmont MACH_BELMONT BELMONT 1767
-+asusp525 MACH_ASUSP525 ASUSP525 1768
-+lb88rc8480 MACH_LB88RC8480 LB88RC8480 1769
-+hipxa MACH_HIPXA HIPXA 1770
-+mx25_3ds MACH_MX25_3DS MX25_3DS 1771
-+m800 MACH_M800 M800 1772
-+omap3530_lv_som MACH_OMAP3530_LV_SOM OMAP3530_LV_SOM 1773
-+prima_evb MACH_PRIMA_EVB PRIMA_EVB 1774
-+mx31bt1 MACH_MX31BT1 MX31BT1 1775
-+atlas4_evb MACH_ATLAS4_EVB ATLAS4_EVB 1776
-+mx31cicada MACH_MX31CICADA MX31CICADA 1777
-+mi424wr MACH_MI424WR MI424WR 1778
-+axs_ultrax MACH_AXS_ULTRAX AXS_ULTRAX 1779
-+at572d940deb MACH_AT572D940DEB AT572D940DEB 1780
-+davinci_da830_evm MACH_DAVINCI_DA830_EVM DAVINCI_DA830_EVM 1781
-+ep9302 MACH_EP9302 EP9302 1782
-+at572d940hfek MACH_AT572D940HFEB AT572D940HFEB 1783
-+cybook3 MACH_CYBOOK3 CYBOOK3 1784
-+wdg002 MACH_WDG002 WDG002 1785
-+sg560adsl MACH_SG560ADSL SG560ADSL 1786
-+nextio_n2800_ica MACH_NEXTIO_N2800_ICA NEXTIO_N2800_ICA 1787
-+dove_db MACH_DOVE_DB DOVE_DB 1788
-+marvell_newdb MACH_MARVELL_NEWDB MARVELL_NEWDB 1789
-+vandihud MACH_VANDIHUD VANDIHUD 1790
-+magx_e8 MACH_MAGX_E8 MAGX_E8 1791
-+magx_z6 MACH_MAGX_Z6 MAGX_Z6 1792
-+magx_v8 MACH_MAGX_V8 MAGX_V8 1793
-+magx_u9 MACH_MAGX_U9 MAGX_U9 1794
-+toughcf08 MACH_TOUGHCF08 TOUGHCF08 1795
-+zw4400 MACH_ZW4400 ZW4400 1796
-+marat91 MACH_MARAT91 MARAT91 1797
-+overo MACH_OVERO OVERO 1798
-+at2440evb MACH_AT2440EVB AT2440EVB 1799
-+neocore926 MACH_NEOCORE926 NEOCORE926 1800
-+wnr854t MACH_WNR854T WNR854T 1801
-+imx27 MACH_IMX27 IMX27 1802
-+moose_db MACH_MOOSE_DB MOOSE_DB 1803
-+fab4 MACH_FAB4 FAB4 1804
-+htcdiamond MACH_HTCDIAMOND HTCDIAMOND 1805
-+fiona MACH_FIONA FIONA 1806
-+mxc30030_x MACH_MXC30030_X MXC30030_X 1807
-+bmp1000 MACH_BMP1000 BMP1000 1808
-+logi9200 MACH_LOGI9200 LOGI9200 1809
-+tqma31 MACH_TQMA31 TQMA31 1810
-+ccw9p9215js MACH_CCW9P9215JS CCW9P9215JS 1811
-+rd88f5181l_ge MACH_RD88F5181L_GE RD88F5181L_GE 1812
-+sifmain MACH_SIFMAIN SIFMAIN 1813
-+sam9_l9261 MACH_SAM9_L9261 SAM9_L9261 1814
-+cc9m2443 MACH_CC9M2443 CC9M2443 1815
-+xaria300 MACH_XARIA300 XARIA300 1816
-+it9200 MACH_IT9200 IT9200 1817
-+rd88f5181l_fxo MACH_RD88F5181L_FXO RD88F5181L_FXO 1818
-+kriss_sensor MACH_KRISS_SENSOR KRISS_SENSOR 1819
-+pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820
-+jade MACH_JADE JADE 1821
-+ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
-+gprisc3 MACH_GPRISC3 GPRISC3 1823
-+stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
-+smdk6430 MACH_SMDK6430 SMDK6430 1825
-+smdkc100 MACH_SMDKC100 SMDKC100 1826
-+tavorevb MACH_TAVOREVB TAVOREVB 1827
-+saar MACH_SAAR SAAR 1828
-+deister_eyecam MACH_DEISTER_EYECAM DEISTER_EYECAM 1829
-+at91sam9m10g45ek MACH_AT91SAM9M10G45EK AT91SAM9M10G45EK 1830
-+linkstation_produo MACH_LINKSTATION_PRODUO LINKSTATION_PRODUO 1831
-+hit_b0 MACH_HIT_B0 HIT_B0 1832
-+adx_rmu MACH_ADX_RMU ADX_RMU 1833
-+xg_cpe_main MACH_XG_CPE_MAIN XG_CPE_MAIN 1834
-+edb9407a MACH_EDB9407A EDB9407A 1835
-+dtb9608 MACH_DTB9608 DTB9608 1836
-+em104v1 MACH_EM104V1 EM104V1 1837
-+demo MACH_DEMO DEMO 1838
-+logi9260 MACH_LOGI9260 LOGI9260 1839
-+mx31_exm32 MACH_MX31_EXM32 MX31_EXM32 1840
-+usb_a9g20 MACH_USB_A9G20 USB_A9G20 1841
-+picproje2008 MACH_PICPROJE2008 PICPROJE2008 1842
-+cs_e9315 MACH_CS_E9315 CS_E9315 1843
-+qil_a9g20 MACH_QIL_A9G20 QIL_A9G20 1844
-+sha_pon020 MACH_SHA_PON020 SHA_PON020 1845
-+nad MACH_NAD NAD 1846
-+sbc35_a9260 MACH_SBC35_A9260 SBC35_A9260 1847
-+sbc35_a9g20 MACH_SBC35_A9G20 SBC35_A9G20 1848
-+davinci_beginning MACH_DAVINCI_BEGINNING DAVINCI_BEGINNING 1849
-+uwc MACH_UWC UWC 1850
-+mxlads MACH_MXLADS MXLADS 1851
-+htcnike MACH_HTCNIKE HTCNIKE 1852
-+deister_pxa270 MACH_DEISTER_PXA270 DEISTER_PXA270 1853
-+cme9210js MACH_CME9210JS CME9210JS 1854
-+cc9p9360 MACH_CC9P9360 CC9P9360 1855
-+mocha MACH_MOCHA MOCHA 1856
-+wapd170ag MACH_WAPD170AG WAPD170AG 1857
-+linkstation_mini MACH_LINKSTATION_MINI LINKSTATION_MINI 1858
-+afeb9260 MACH_AFEB9260 AFEB9260 1859
-+w90x900 MACH_W90X900 W90X900 1860
-+w90x700 MACH_W90X700 W90X700 1861
-+kt300ip MACH_KT300IP KT300IP 1862
-+kt300ip_g20 MACH_KT300IP_G20 KT300IP_G20 1863
-+srcm MACH_SRCM SRCM 1864
-+wlnx_9260 MACH_WLNX_9260 WLNX_9260 1865
-+openmoko_gta03 MACH_OPENMOKO_GTA03 OPENMOKO_GTA03 1866
-+osprey2 MACH_OSPREY2 OSPREY2 1867
-+kbio9260 MACH_KBIO9260 KBIO9260 1868
-+ginza MACH_GINZA GINZA 1869
-+a636n MACH_A636N A636N 1870
-+imx27ipcam MACH_IMX27IPCAM IMX27IPCAM 1871
-+nemoc MACH_NEMOC NEMOC 1872
-+geneva MACH_GENEVA GENEVA 1873
-+htcpharos MACH_HTCPHAROS HTCPHAROS 1874
-+neonc MACH_NEONC NEONC 1875
-+nas7100 MACH_NAS7100 NAS7100 1876
-+teuphone MACH_TEUPHONE TEUPHONE 1877
-+annax_eth2 MACH_ANNAX_ETH2 ANNAX_ETH2 1878
-+csb733 MACH_CSB733 CSB733 1879
-+bk3 MACH_BK3 BK3 1880
-+omap_em32 MACH_OMAP_EM32 OMAP_EM32 1881
-+et9261cp MACH_ET9261CP ET9261CP 1882
-+jasperc MACH_JASPERC JASPERC 1883
-+issi_arm9 MACH_ISSI_ARM9 ISSI_ARM9 1884
-+ued MACH_UED UED 1885
-+esiblade MACH_ESIBLADE ESIBLADE 1886
-+eye02 MACH_EYE02 EYE02 1887
-+imx27kbd MACH_IMX27KBD IMX27KBD 1888
-+sst61vc010_fpga MACH_SST61VC010_FPGA SST61VC010_FPGA 1889
-+kixvp435 MACH_KIXVP435 KIXVP435 1890
-+kixnp435 MACH_KIXNP435 KIXNP435 1891
-+africa MACH_AFRICA AFRICA 1892
-+nh233 MACH_NH233 NH233 1893
-+rd88f6183ap_ge MACH_RD88F6183AP_GE RD88F6183AP_GE 1894
-+bcm4760 MACH_BCM4760 BCM4760 1895
-+eddy_v2 MACH_EDDY_V2 EDDY_V2 1896
-+realview_pba8 MACH_REALVIEW_PBA8 REALVIEW_PBA8 1897
-+hid_a7 MACH_HID_A7 HID_A7 1898
-+hero MACH_HERO HERO 1899
-+omap_poseidon MACH_OMAP_POSEIDON OMAP_POSEIDON 1900
-+realview_pbx MACH_REALVIEW_PBX REALVIEW_PBX 1901
-+micro9s MACH_MICRO9S MICRO9S 1902
-+mako MACH_MAKO MAKO 1903
-+xdaflame MACH_XDAFLAME XDAFLAME 1904
-+phidget_sbc2 MACH_PHIDGET_SBC2 PHIDGET_SBC2 1905
-+limestone MACH_LIMESTONE LIMESTONE 1906
-+iprobe_c32 MACH_IPROBE_C32 IPROBE_C32 1907
-+rut100 MACH_RUT100 RUT100 1908
-+asusp535 MACH_ASUSP535 ASUSP535 1909
-+htcraphael MACH_HTCRAPHAEL HTCRAPHAEL 1910
-+sygdg1 MACH_SYGDG1 SYGDG1 1911
-+sygdg2 MACH_SYGDG2 SYGDG2 1912
-+seoul MACH_SEOUL SEOUL 1913
-+salerno MACH_SALERNO SALERNO 1914
-+ucn_s3c64xx MACH_UCN_S3C64XX UCN_S3C64XX 1915
-+msm7201a MACH_MSM7201A MSM7201A 1916
-+lpr1 MACH_LPR1 LPR1 1917
-+armadillo500fx MACH_ARMADILLO500FX ARMADILLO500FX 1918
-+g3evm MACH_G3EVM G3EVM 1919
-+z3_dm355 MACH_Z3_DM355 Z3_DM355 1920
-+w90p910evb MACH_W90P910EVB W90P910EVB 1921
-+w90p920evb MACH_W90P920EVB W90P920EVB 1922
-+w90p950evb MACH_W90P950EVB W90P950EVB 1923
-+w90n960evb MACH_W90N960EVB W90N960EVB 1924
-+camhd MACH_CAMHD CAMHD 1925
-+mvc100 MACH_MVC100 MVC100 1926
-+electrum_200 MACH_ELECTRUM_200 ELECTRUM_200 1927
-+htcjade MACH_HTCJADE HTCJADE 1928
-+memphis MACH_MEMPHIS MEMPHIS 1929
-+imx27sbc MACH_IMX27SBC IMX27SBC 1930
-+lextar MACH_LEXTAR LEXTAR 1931
-+mv88f6281gtw_ge MACH_MV88F6281GTW_GE MV88F6281GTW_GE 1932
-+ncp MACH_NCP NCP 1933
-+z32an_series MACH_Z32AN Z32AN 1934
-+tmq_capd MACH_TMQ_CAPD TMQ_CAPD 1935
-+omap3_wl MACH_OMAP3_WL OMAP3_WL 1936
-+chumby MACH_CHUMBY CHUMBY 1937
-+atsarm9 MACH_ATSARM9 ATSARM9 1938
-+davinci_dm365_evm MACH_DAVINCI_DM365_EVM DAVINCI_DM365_EVM 1939
-+bahamas MACH_BAHAMAS BAHAMAS 1940
-+das MACH_DAS DAS 1941
-+minidas MACH_MINIDAS MINIDAS 1942
-+vk1000 MACH_VK1000 VK1000 1943
-+centro MACH_CENTRO CENTRO 1944
-+ctera_2bay MACH_CTERA_2BAY CTERA_2BAY 1945
-+edgeconnect MACH_EDGECONNECT EDGECONNECT 1946
-+nd27000 MACH_ND27000 ND27000 1947
-+cobra MACH_GEMALTO_COBRA GEMALTO_COBRA 1948
-+ingelabs_comet MACH_INGELABS_COMET INGELABS_COMET 1949
-+pollux_wiz MACH_POLLUX_WIZ POLLUX_WIZ 1950
-+blackstone MACH_BLACKSTONE BLACKSTONE 1951
-+topaz MACH_TOPAZ TOPAZ 1952
-+aixle MACH_AIXLE AIXLE 1953
-+mw998 MACH_MW998 MW998 1954
-+nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955
-+vsc5605ev MACH_VSC5605EV VSC5605EV 1956
-+nt98700dk MACH_NT98700DK NT98700DK 1957
-+icontact MACH_ICONTACT ICONTACT 1958
-+swarco_frcpu MACH_SWARCO_FRCPU SWARCO_FRCPU 1959
-+swarco_scpu MACH_SWARCO_SCPU SWARCO_SCPU 1960
-+bbox_p16 MACH_BBOX_P16 BBOX_P16 1961
-+bstd MACH_BSTD BSTD 1962
-+sbc2440ii MACH_SBC2440II SBC2440II 1963
-+pcm034 MACH_PCM034 PCM034 1964
-+neso MACH_NESO NESO 1965
-+wlnx_9g20 MACH_WLNX_9G20 WLNX_9G20 1966
-+omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967
-+totemnova MACH_TOTEMNOVA TOTEMNOVA 1968
-+c5000 MACH_C5000 C5000 1969
-+unipo_at91sam9263 MACH_UNIPO_AT91SAM9263 UNIPO_AT91SAM9263 1970
-+ethernut5 MACH_ETHERNUT5 ETHERNUT5 1971
-+arm11 MACH_ARM11 ARM11 1972
-+cpuat9260 MACH_CPUAT9260 CPUAT9260 1973
-+cpupxa255 MACH_CPUPXA255 CPUPXA255 1974
-+eukrea_cpuimx27 MACH_CPUIMX27 CPUIMX27 1975
-+cheflux MACH_CHEFLUX CHEFLUX 1976
-+eb_cpux9k2 MACH_EB_CPUX9K2 EB_CPUX9K2 1977
-+opcotec MACH_OPCOTEC OPCOTEC 1978
-+yt MACH_YT YT 1979
-+motoq MACH_MOTOQ MOTOQ 1980
-+bsb1 MACH_BSB1 BSB1 1981
-+acs5k MACH_ACS5K ACS5K 1982
-+milan MACH_MILAN MILAN 1983
-+quartzv2 MACH_QUARTZV2 QUARTZV2 1984
-+rsvp MACH_RSVP RSVP 1985
-+rmp200 MACH_RMP200 RMP200 1986
-+snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987
-+dsm320 MACH_DSM320 DSM320 1988
-+adsgcm MACH_ADSGCM ADSGCM 1989
-+ase2_400 MACH_ASE2_400 ASE2_400 1990
-+pizza MACH_PIZZA PIZZA 1991
-+spot_ngpl MACH_SPOT_NGPL SPOT_NGPL 1992
-+armata MACH_ARMATA ARMATA 1993
-+exeda MACH_EXEDA EXEDA 1994
-+mx31sf005 MACH_MX31SF005 MX31SF005 1995
-+f5d8231_4_v2 MACH_F5D8231_4_V2 F5D8231_4_V2 1996
-+q2440 MACH_Q2440 Q2440 1997
-+qq2440 MACH_QQ2440 QQ2440 1998
-+mini2440 MACH_MINI2440 MINI2440 1999
-+colibri300 MACH_COLIBRI300 COLIBRI300 2000
-+jades MACH_JADES JADES 2001
-+spark MACH_SPARK SPARK 2002
-+benzina MACH_BENZINA BENZINA 2003
-+blaze MACH_BLAZE BLAZE 2004
-+linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
-+htckovsky MACH_HTCVENUS HTCVENUS 2006
-+sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
-+hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
-+sapphira MACH_SAPPHIRA SAPPHIRA 2009
-+dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
-+armbox MACH_ARMBOX ARMBOX 2011
-+harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
-+ribaldo MACH_RIBALDO RIBALDO 2013
-+agora MACH_AGORA AGORA 2014
-+omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
-+a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
-+usg2410 MACH_USG2410 USG2410 2017
-+pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
-+mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
-+topas910 MACH_TOPAS910 TOPAS910 2020
-+hyena MACH_HYENA HYENA 2021
-+pospax MACH_POSPAX POSPAX 2022
-+hdl_gx MACH_HDL_GX HDL_GX 2023
-+ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
-+ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
-+crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
-+egauge2 MACH_EGAUGE2 EGAUGE2 2027
-+didj MACH_DIDJ DIDJ 2028
-+m_s3c2443 MACH_MEISTER MEISTER 2029
-+htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
-+cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
-+smdk6440 MACH_SMDK6440 SMDK6440 2032
-+omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
-+ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
-+pvg610_100 MACH_PVG610 PVG610 2035
-+hprw6815 MACH_HPRW6815 HPRW6815 2036
-+omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
-+nas4220b MACH_NAS4220B NAS4220B 2038
-+htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
-+htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
-+scaler MACH_SCALER SCALER 2041
-+zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
-+aspenite MACH_ASPENITE ASPENITE 2043
-+teton MACH_TETON TETON 2044
-+ttc_dkb MACH_TTC_DKB TTC_DKB 2045
-+bishop2 MACH_BISHOP2 BISHOP2 2046
-+ippv5 MACH_IPPV5 IPPV5 2047
-+farm926 MACH_FARM926 FARM926 2048
-+mmccpu MACH_MMCCPU MMCCPU 2049
-+sgmsfl MACH_SGMSFL SGMSFL 2050
-+tt8000 MACH_TT8000 TT8000 2051
-+zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
-+mptc MACH_MPTC MPTC 2053
-+h6051 MACH_H6051 H6051 2054
-+pvg610_101 MACH_PVG610_101 PVG610_101 2055
-+stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
-+pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
-+tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
-+tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
-+aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
-+dx900 MACH_DX900 DX900 2061
-+cpodc2 MACH_CPODC2 CPODC2 2062
-+tilt_8925 MACH_TILT_8925 TILT_8925 2063
-+davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
-+swordfish MACH_SWORDFISH SWORDFISH 2065
-+corvus MACH_CORVUS CORVUS 2066
-+taurus MACH_TAURUS TAURUS 2067
-+axm MACH_AXM AXM 2068
-+axc MACH_AXC AXC 2069
-+baby MACH_BABY BABY 2070
-+mp200 MACH_MP200 MP200 2071
-+pcm043 MACH_PCM043 PCM043 2072
-+hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
-+kbk9g20 MACH_KBK9G20 KBK9G20 2074
-+adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
-+avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
-+suc82x MACH_SUC SUC 2077
-+at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
-+mendoza MACH_MENDOZA MENDOZA 2079
-+kira MACH_KIRA KIRA 2080
-+mx1hbm MACH_MX1HBM MX1HBM 2081
-+quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
-+quatro4230 MACH_QUATRO4230 QUATRO4230 2083
-+nsb400 MACH_NSB400 NSB400 2084
-+drp255 MACH_DRP255 DRP255 2085
-+thoth MACH_THOTH THOTH 2086
-+firestone MACH_FIRESTONE FIRESTONE 2087
-+asusp750 MACH_ASUSP750 ASUSP750 2088
-+ctera_dl MACH_CTERA_DL CTERA_DL 2089
-+socr MACH_SOCR SOCR 2090
-+htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
-+heroc MACH_HEROC HEROC 2092
-+zeno6800 MACH_ZENO6800 ZENO6800 2093
-+sc2mcs MACH_SC2MCS SC2MCS 2094
-+gene100 MACH_GENE100 GENE100 2095
-+as353x MACH_AS353X AS353X 2096
-+sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
-+at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
-+mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
-+cc9200 MACH_CC9200 CC9200 2100
-+sm9200 MACH_SM9200 SM9200 2101
-+tp9200 MACH_TP9200 TP9200 2102
-+snapperdv MACH_SNAPPERDV SNAPPERDV 2103
-+avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
-+avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
-+omap3axon MACH_OMAP3AXON OMAP3AXON 2106
-+ma8xx MACH_MA8XX MA8XX 2107
-+mp201ek MACH_MP201EK MP201EK 2108
-+davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
-+mpa1600 MACH_MPA1600 MPA1600 2110
-+pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
-+nsb667 MACH_NSB667 NSB667 2112
-+rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
-+twocom MACH_TWOCOM TWOCOM 2114
-+ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
-+hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
-+afeusb MACH_AFEUSB AFEUSB 2117
-+t830 MACH_T830 T830 2118
-+spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
-+om_3d7k MACH_OM_3D7K OM_3D7K 2120
-+picocom2 MACH_PICOCOM2 PICOCOM2 2121
-+uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
-+uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
-+cherry MACH_CHERRY CHERRY 2124
-+mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
-+s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
-+tx37 MACH_TX37 TX37 2127
-+sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
-+benzglb MACH_BENZGLB BENZGLB 2129
-+benztd MACH_BENZTD BENZTD 2130
-+cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
-+solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
-+mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
-+fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
-+rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
-+smallogger MACH_SMALLOGGER SMALLOGGER 2136
-+ccw9p9215 MACH_CCW9P9215 CCW9P9215 2137
-+dm355_leopard MACH_DM355_LEOPARD DM355_LEOPARD 2138
-+ts219 MACH_TS219 TS219 2139
-+tny_a9263 MACH_TNY_A9263 TNY_A9263 2140
-+apollo MACH_APOLLO APOLLO 2141
-+at91cap9stk MACH_AT91CAP9STK AT91CAP9STK 2142
-+spc300 MACH_SPC300 SPC300 2143
-+eko MACH_EKO EKO 2144
-+ccw9m2443 MACH_CCW9M2443 CCW9M2443 2145
-+ccw9m2443js MACH_CCW9M2443JS CCW9M2443JS 2146
-+m2m_router_device MACH_M2M_ROUTER_DEVICE M2M_ROUTER_DEVICE 2147
-+str9104nas MACH_STAR9104NAS STAR9104NAS 2148
-+pca100 MACH_PCA100 PCA100 2149
-+z3_dm365_mod_01 MACH_Z3_DM365_MOD_01 Z3_DM365_MOD_01 2150
-+hipox MACH_HIPOX HIPOX 2151
-+omap3_piteds MACH_OMAP3_PITEDS OMAP3_PITEDS 2152
-+bm150r MACH_BM150R BM150R 2153
-+tbone MACH_TBONE TBONE 2154
-+merlin MACH_MERLIN MERLIN 2155
-+falcon MACH_FALCON FALCON 2156
-+davinci_da850_evm MACH_DAVINCI_DA850_EVM DAVINCI_DA850_EVM 2157
-+s5p6440 MACH_S5P6440 S5P6440 2158
-+at91sam9g10ek MACH_AT91SAM9G10EK AT91SAM9G10EK 2159
-+omap_4430sdp MACH_OMAP_4430SDP OMAP_4430SDP 2160
-+lpc313x MACH_LPC313X LPC313X 2161
-+magx_zn5 MACH_MAGX_ZN5 MAGX_ZN5 2162
-+magx_em30 MACH_MAGX_EM30 MAGX_EM30 2163
-+magx_ve66 MACH_MAGX_VE66 MAGX_VE66 2164
-+meesc MACH_MEESC MEESC 2165
-+otc570 MACH_OTC570 OTC570 2166
-+bcu2412 MACH_BCU2412 BCU2412 2167
-+beacon MACH_BEACON BEACON 2168
-+actia_tgw MACH_ACTIA_TGW ACTIA_TGW 2169
-+e4430 MACH_E4430 E4430 2170
-+ql300 MACH_QL300 QL300 2171
-+btmavb101 MACH_BTMAVB101 BTMAVB101 2172
-+btmawb101 MACH_BTMAWB101 BTMAWB101 2173
-+sq201 MACH_SQ201 SQ201 2174
-+quatro45xx MACH_QUATRO45XX QUATRO45XX 2175
-+openpad MACH_OPENPAD OPENPAD 2176
-+tx25 MACH_TX25 TX25 2177
-+omap3_torpedo MACH_OMAP3_TORPEDO OMAP3_TORPEDO 2178
-+htcraphael_k MACH_HTCRAPHAEL_K HTCRAPHAEL_K 2179
-+lal43 MACH_LAL43 LAL43 2181
-+htcraphael_cdma500 MACH_HTCRAPHAEL_CDMA500 HTCRAPHAEL_CDMA500 2182
-+anw6410 MACH_ANW6410 ANW6410 2183
-+htcprophet MACH_HTCPROPHET HTCPROPHET 2185
-+cfa_10022 MACH_CFA_10022 CFA_10022 2186
-+imx27_visstrim_m10 MACH_IMX27_VISSTRIM_M10 IMX27_VISSTRIM_M10 2187
-+px2imx27 MACH_PX2IMX27 PX2IMX27 2188
-+stm3210e_eval MACH_STM3210E_EVAL STM3210E_EVAL 2189
-+dvs10 MACH_DVS10 DVS10 2190
-+portuxg20 MACH_PORTUXG20 PORTUXG20 2191
-+arm_spv MACH_ARM_SPV ARM_SPV 2192
-+smdkc110 MACH_SMDKC110 SMDKC110 2193
-+cabespresso MACH_CABESPRESSO CABESPRESSO 2194
-+hmc800 MACH_HMC800 HMC800 2195
-+sholes MACH_SHOLES SHOLES 2196
-+btmxc31 MACH_BTMXC31 BTMXC31 2197
-+dt501 MACH_DT501 DT501 2198
-+ktx MACH_KTX KTX 2199
-+omap3517evm MACH_OMAP3517EVM OMAP3517EVM 2200
-+netspace_v2 MACH_NETSPACE_V2 NETSPACE_V2 2201
-+netspace_max_v2 MACH_NETSPACE_MAX_V2 NETSPACE_MAX_V2 2202
-+d2net_v2 MACH_D2NET_V2 D2NET_V2 2203
-+net2big_v2 MACH_NET2BIG_V2 NET2BIG_V2 2204
-+net4big_v2 MACH_NET4BIG_V2 NET4BIG_V2 2205
-+net5big_v2 MACH_NET5BIG_V2 NET5BIG_V2 2206
-+endb2443 MACH_ENDB2443 ENDB2443 2207
-+inetspace_v2 MACH_INETSPACE_V2 INETSPACE_V2 2208
-+tros MACH_TROS TROS 2209
-+pelco_homer MACH_PELCO_HOMER PELCO_HOMER 2210
-+ofsp8 MACH_OFSP8 OFSP8 2211
-+at91sam9g45ekes MACH_AT91SAM9G45EKES AT91SAM9G45EKES 2212
-+guf_cupid MACH_GUF_CUPID GUF_CUPID 2213
-+eab1r MACH_EAB1R EAB1R 2214
-+desirec MACH_DESIREC DESIREC 2215
-+cordoba MACH_CORDOBA CORDOBA 2216
-+irvine MACH_IRVINE IRVINE 2217
-+sff772 MACH_SFF772 SFF772 2218
-+pelco_milano MACH_PELCO_MILANO PELCO_MILANO 2219
-+pc7302 MACH_PC7302 PC7302 2220
-+bip6000 MACH_BIP6000 BIP6000 2221
-+silvermoon MACH_SILVERMOON SILVERMOON 2222
-+vc0830 MACH_VC0830 VC0830 2223
-+dt430 MACH_DT430 DT430 2224
-+ji42pf MACH_JI42PF JI42PF 2225
-+gnet_ksm MACH_GNET_KSM GNET_KSM 2226
-+gnet_sgm MACH_GNET_SGM GNET_SGM 2227
-+gnet_sgr MACH_GNET_SGR GNET_SGR 2228
-+omap3_icetekevm MACH_OMAP3_ICETEKEVM OMAP3_ICETEKEVM 2229
-+pnp MACH_PNP PNP 2230
-+ctera_2bay_k MACH_CTERA_2BAY_K CTERA_2BAY_K 2231
-+ctera_2bay_u MACH_CTERA_2BAY_U CTERA_2BAY_U 2232
-+sas_c MACH_SAS_C SAS_C 2233
-+vma2315 MACH_VMA2315 VMA2315 2234
-+vcs MACH_VCS VCS 2235
-+spear600 MACH_SPEAR600 SPEAR600 2236
-+spear300 MACH_SPEAR300 SPEAR300 2237
-+spear1300 MACH_SPEAR1300 SPEAR1300 2238
-+lilly1131 MACH_LILLY1131 LILLY1131 2239
-+arvoo_ax301 MACH_ARVOO_AX301 ARVOO_AX301 2240
-+mapphone MACH_MAPPHONE MAPPHONE 2241
-+legend MACH_LEGEND LEGEND 2242
-+salsa MACH_SALSA SALSA 2243
-+lounge MACH_LOUNGE LOUNGE 2244
-+vision MACH_VISION VISION 2245
-+vmb20 MACH_VMB20 VMB20 2246
-+hy2410 MACH_HY2410 HY2410 2247
-+hy9315 MACH_HY9315 HY9315 2248
-+bullwinkle MACH_BULLWINKLE BULLWINKLE 2249
-+arm_ultimator2 MACH_ARM_ULTIMATOR2 ARM_ULTIMATOR2 2250
-+vs_v210 MACH_VS_V210 VS_V210 2252
-+vs_v212 MACH_VS_V212 VS_V212 2253
-+hmt MACH_HMT HMT 2254
-+suen3 MACH_SUEN3 SUEN3 2255
-+vesper MACH_VESPER VESPER 2256
-+str9 MACH_STR9 STR9 2257
-+omap3_wl_ff MACH_OMAP3_WL_FF OMAP3_WL_FF 2258
-+simcom MACH_SIMCOM SIMCOM 2259
-+mcwebio MACH_MCWEBIO MCWEBIO 2260
-+omap3_phrazer MACH_OMAP3_PHRAZER OMAP3_PHRAZER 2261
-+darwin MACH_DARWIN DARWIN 2262
-+oratiscomu MACH_ORATISCOMU ORATISCOMU 2263
-+rtsbc20 MACH_RTSBC20 RTSBC20 2264
-+sgh_i780 MACH_I780 I780 2265
-+gemini324 MACH_GEMINI324 GEMINI324 2266
-+oratislan MACH_ORATISLAN ORATISLAN 2267
-+oratisalog MACH_ORATISALOG ORATISALOG 2268
-+oratismadi MACH_ORATISMADI ORATISMADI 2269
-+oratisot16 MACH_ORATISOT16 ORATISOT16 2270
-+oratisdesk MACH_ORATISDESK ORATISDESK 2271
-+vexpress MACH_VEXPRESS VEXPRESS 2272
-+sintexo MACH_SINTEXO SINTEXO 2273
-+cm3389 MACH_CM3389 CM3389 2274
-+omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275
-+sgh_i900 MACH_SGH_I900 SGH_I900 2276
-+bst100 MACH_BST100 BST100 2277
-+passion MACH_PASSION PASSION 2278
-+indesign_at91sam MACH_INDESIGN_AT91SAM INDESIGN_AT91SAM 2279
-+c4_badger MACH_C4_BADGER C4_BADGER 2280
-+c4_viper MACH_C4_VIPER C4_VIPER 2281
-+d2net MACH_D2NET D2NET 2282
-+bigdisk MACH_BIGDISK BIGDISK 2283
-+notalvision MACH_NOTALVISION NOTALVISION 2284
-+omap3_kboc MACH_OMAP3_KBOC OMAP3_KBOC 2285
-+cyclone MACH_CYCLONE CYCLONE 2286
-+ninja MACH_NINJA NINJA 2287
-+at91sam9g20ek_2mmc MACH_AT91SAM9G20EK_2MMC AT91SAM9G20EK_2MMC 2288
-+bcmring MACH_BCMRING BCMRING 2289
-+resol_dl2 MACH_RESOL_DL2 RESOL_DL2 2290
-+ifosw MACH_IFOSW IFOSW 2291
-+htcrhodium MACH_HTCRHODIUM HTCRHODIUM 2292
-+htctopaz MACH_HTCTOPAZ HTCTOPAZ 2293
-+matrix504 MACH_MATRIX504 MATRIX504 2294
-+mrfsa MACH_MRFSA MRFSA 2295
-+sc_p270 MACH_SC_P270 SC_P270 2296
-+atlas5_evb MACH_ATLAS5_EVB ATLAS5_EVB 2297
-+pelco_lobox MACH_PELCO_LOBOX PELCO_LOBOX 2298
-+dilax_pcu200 MACH_DILAX_PCU200 DILAX_PCU200 2299
-+leonardo MACH_LEONARDO LEONARDO 2300
-+zoran_approach7 MACH_ZORAN_APPROACH7 ZORAN_APPROACH7 2301
-+dp6xx MACH_DP6XX DP6XX 2302
-+bcm2153_vesper MACH_BCM2153_VESPER BCM2153_VESPER 2303
-+mahimahi MACH_MAHIMAHI MAHIMAHI 2304
-+clickc MACH_CLICKC CLICKC 2305
-+zb_gateway MACH_ZB_GATEWAY ZB_GATEWAY 2306
-+tazcard MACH_TAZCARD TAZCARD 2307
-+tazdev MACH_TAZDEV TAZDEV 2308
-+annax_cb_arm MACH_ANNAX_CB_ARM ANNAX_CB_ARM 2309
-+annax_dm3 MACH_ANNAX_DM3 ANNAX_DM3 2310
-+cerebric MACH_CEREBRIC CEREBRIC 2311
-+orca MACH_ORCA ORCA 2312
-+pc9260 MACH_PC9260 PC9260 2313
-+ems285a MACH_EMS285A EMS285A 2314
-+gec2410 MACH_GEC2410 GEC2410 2315
-+gec2440 MACH_GEC2440 GEC2440 2316
-+mw903 MACH_ARCH_MW903 ARCH_MW903 2317
-+mw2440 MACH_MW2440 MW2440 2318
-+ecac2378 MACH_ECAC2378 ECAC2378 2319
-+tazkiosk MACH_TAZKIOSK TAZKIOSK 2320
-+whiterabbit_mch MACH_WHITERABBIT_MCH WHITERABBIT_MCH 2321
-+sbox9263 MACH_SBOX9263 SBOX9263 2322
-+oreo MACH_OREO OREO 2323
-+smdk6442 MACH_SMDK6442 SMDK6442 2324
-+openrd_base MACH_OPENRD_BASE OPENRD_BASE 2325
-+incredible MACH_INCREDIBLE INCREDIBLE 2326
-+incrediblec MACH_INCREDIBLEC INCREDIBLEC 2327
-+heroct MACH_HEROCT HEROCT 2328
-+mmnet1000 MACH_MMNET1000 MMNET1000 2329
-+devkit8000 MACH_DEVKIT8000 DEVKIT8000 2330
-+devkit9000 MACH_DEVKIT9000 DEVKIT9000 2331
-+mx31txtr MACH_MX31TXTR MX31TXTR 2332
-+u380 MACH_U380 U380 2333
-+oamp3_hualu MACH_HUALU_BOARD HUALU_BOARD 2334
-+npcmx50 MACH_NPCMX50 NPCMX50 2335
-+mx51_lange51 MACH_MX51_LANGE51 MX51_LANGE51 2336
-+mx51_lange52 MACH_MX51_LANGE52 MX51_LANGE52 2337
-+riom MACH_RIOM RIOM 2338
-+comcas MACH_COMCAS COMCAS 2339
-+wsi_mx27 MACH_WSI_MX27 WSI_MX27 2340
-+cm_t35 MACH_CM_T35 CM_T35 2341
-+net2big MACH_NET2BIG NET2BIG 2342
-+motorola_a1600 MACH_MOTOROLA_A1600 MOTOROLA_A1600 2343
-+igep0020 MACH_IGEP0020 IGEP0020 2344
-+igep0010 MACH_IGEP0010 IGEP0010 2345
-+mv6281gtwge2 MACH_MV6281GTWGE2 MV6281GTWGE2 2346
-+scat100 MACH_SCAT100 SCAT100 2347
-+sanmina MACH_SANMINA SANMINA 2348
-+momento MACH_MOMENTO MOMENTO 2349
-+nuc9xx MACH_NUC9XX NUC9XX 2350
-+nuc910evb MACH_NUC910EVB NUC910EVB 2351
-+nuc920evb MACH_NUC920EVB NUC920EVB 2352
-+nuc950evb MACH_NUC950EVB NUC950EVB 2353
-+nuc945evb MACH_NUC945EVB NUC945EVB 2354
-+nuc960evb MACH_NUC960EVB NUC960EVB 2355
-+nuc932evb MACH_NUC932EVB NUC932EVB 2356
-+nuc900 MACH_NUC900 NUC900 2357
-+sd1soc MACH_SD1SOC SD1SOC 2358
-+ln2440bc MACH_LN2440BC LN2440BC 2359
-+rsbc MACH_RSBC RSBC 2360
-+openrd_client MACH_OPENRD_CLIENT OPENRD_CLIENT 2361
-+hpipaq11x MACH_HPIPAQ11X HPIPAQ11X 2362
-+wayland MACH_WAYLAND WAYLAND 2363
-+acnbsx102 MACH_ACNBSX102 ACNBSX102 2364
-+hwat91 MACH_HWAT91 HWAT91 2365
-+at91sam9263cs MACH_AT91SAM9263CS AT91SAM9263CS 2366
-+csb732 MACH_CSB732 CSB732 2367
-+u8500 MACH_U8500 U8500 2368
-+huqiu MACH_HUQIU HUQIU 2369
-+mx51_kunlun MACH_MX51_KUNLUN MX51_KUNLUN 2370
-+pmt1g MACH_PMT1G PMT1G 2371
-+htcelf MACH_HTCELF HTCELF 2372
-+armadillo420 MACH_ARMADILLO420 ARMADILLO420 2373
-+armadillo440 MACH_ARMADILLO440 ARMADILLO440 2374
-+u_chip_dual_arm MACH_U_CHIP_DUAL_ARM U_CHIP_DUAL_ARM 2375
-+csr_bdb3 MACH_CSR_BDB3 CSR_BDB3 2376
-+dolby_cat1018 MACH_DOLBY_CAT1018 DOLBY_CAT1018 2377
-+hy9307 MACH_HY9307 HY9307 2378
-+aspire_easystore MACH_A_ES A_ES 2379
-+davinci_irif MACH_DAVINCI_IRIF DAVINCI_IRIF 2380
-+agama9263 MACH_AGAMA9263 AGAMA9263 2381
-+marvell_jasper MACH_MARVELL_JASPER MARVELL_JASPER 2382
-+flint MACH_FLINT FLINT 2383
-+tavorevb3 MACH_TAVOREVB3 TAVOREVB3 2384
-+sch_m490 MACH_SCH_M490 SCH_M490 2386
-+rbl01 MACH_RBL01 RBL01 2387
-+omnifi MACH_OMNIFI OMNIFI 2388
-+otavalo MACH_OTAVALO OTAVALO 2389
-+siena MACH_SIENNA SIENNA 2390
-+htc_excalibur_s620 MACH_HTC_EXCALIBUR_S620 HTC_EXCALIBUR_S620 2391
-+htc_opal MACH_HTC_OPAL HTC_OPAL 2392
-+touchbook MACH_TOUCHBOOK TOUCHBOOK 2393
-+latte MACH_LATTE LATTE 2394
-+xa200 MACH_XA200 XA200 2395
-+nimrod MACH_NIMROD NIMROD 2396
-+cc9p9215_3g MACH_CC9P9215_3G CC9P9215_3G 2397
-+cc9p9215_3gjs MACH_CC9P9215_3GJS CC9P9215_3GJS 2398
-+tk71 MACH_TK71 TK71 2399
-+comham3525 MACH_COMHAM3525 COMHAM3525 2400
-+mx31erebus MACH_MX31EREBUS MX31EREBUS 2401
-+mcardmx27 MACH_MCARDMX27 MCARDMX27 2402
-+paradise MACH_PARADISE PARADISE 2403
-+tide MACH_TIDE TIDE 2404
-+wzl2440 MACH_WZL2440 WZL2440 2405
-+sdrdemo MACH_SDRDEMO SDRDEMO 2406
-+ethercan2 MACH_ETHERCAN2 ETHERCAN2 2407
-+ecmimg20 MACH_ECMIMG20 ECMIMG20 2408
-+omap_dragon MACH_OMAP_DRAGON OMAP_DRAGON 2409
-+halo MACH_HALO HALO 2410
-+huangshan MACH_HUANGSHAN HUANGSHAN 2411
-+vl_ma2sc MACH_VL_MA2SC VL_MA2SC 2412
-+raumfeld_rc MACH_RAUMFELD_RC RAUMFELD_RC 2413
-+raumfeld_connector MACH_RAUMFELD_CONNECTOR RAUMFELD_CONNECTOR 2414
-+raumfeld_speaker MACH_RAUMFELD_SPEAKER RAUMFELD_SPEAKER 2415
-+multibus_master MACH_MULTIBUS_MASTER MULTIBUS_MASTER 2416
-+multibus_pbk MACH_MULTIBUS_PBK MULTIBUS_PBK 2417
-+tnetv107x MACH_TNETV107X TNETV107X 2418
-+snake MACH_SNAKE SNAKE 2419
-+cwmx27 MACH_CWMX27 CWMX27 2420
-+sch_m480 MACH_SCH_M480 SCH_M480 2421
-+platypus MACH_PLATYPUS PLATYPUS 2422
-+pss2 MACH_PSS2 PSS2 2423
-+davinci_apm150 MACH_DAVINCI_APM150 DAVINCI_APM150 2424
-+str9100 MACH_STR9100 STR9100 2425
-+net5big MACH_NET5BIG NET5BIG 2426
-+seabed9263 MACH_SEABED9263 SEABED9263 2427
-+mx51_m2id MACH_MX51_M2ID MX51_M2ID 2428
-+octvocplus_eb MACH_OCTVOCPLUS_EB OCTVOCPLUS_EB 2429
-+klk_firefox MACH_KLK_FIREFOX KLK_FIREFOX 2430
-+klk_wirma_module MACH_KLK_WIRMA_MODULE KLK_WIRMA_MODULE 2431
-+klk_wirma_mmi MACH_KLK_WIRMA_MMI KLK_WIRMA_MMI 2432
-+supersonic MACH_SUPERSONIC SUPERSONIC 2433
-+liberty MACH_LIBERTY LIBERTY 2434
-+mh355 MACH_MH355 MH355 2435
-+pc7802 MACH_PC7802 PC7802 2436
-+gnet_sgc MACH_GNET_SGC GNET_SGC 2437
-+einstein15 MACH_EINSTEIN15 EINSTEIN15 2438
-+cmpd MACH_CMPD CMPD 2439
-+davinci_hase1 MACH_DAVINCI_HASE1 DAVINCI_HASE1 2440
-+lgeincitephone MACH_LGEINCITEPHONE LGEINCITEPHONE 2441
-+ea313x MACH_EA313X EA313X 2442
-+fwbd_39064 MACH_FWBD_39064 FWBD_39064 2443
-+fwbd_390128 MACH_FWBD_390128 FWBD_390128 2444
-+pelco_moe MACH_PELCO_MOE PELCO_MOE 2445
-+minimix27 MACH_MINIMIX27 MINIMIX27 2446
-+omap3_thunder MACH_OMAP3_THUNDER OMAP3_THUNDER 2447
-+passionc MACH_PASSIONC PASSIONC 2448
-+mx27amata MACH_MX27AMATA MX27AMATA 2449
-+bgat1 MACH_BGAT1 BGAT1 2450
-+buzz MACH_BUZZ BUZZ 2451
-+mb9g20 MACH_MB9G20 MB9G20 2452
-+yushan MACH_YUSHAN YUSHAN 2453
-+lizard MACH_LIZARD LIZARD 2454
-+omap3polycom MACH_OMAP3POLYCOM OMAP3POLYCOM 2455
-+smdkv210 MACH_SMDKV210 SMDKV210 2456
-+bravo MACH_BRAVO BRAVO 2457
-+siogentoo1 MACH_SIOGENTOO1 SIOGENTOO1 2458
-+siogentoo2 MACH_SIOGENTOO2 SIOGENTOO2 2459
-+sm3k MACH_SM3K SM3K 2460
-+acer_tempo_f900 MACH_ACER_TEMPO_F900 ACER_TEMPO_F900 2461
-+sst61vc010_dev MACH_SST61VC010_DEV SST61VC010_DEV 2462
-+glittertind MACH_GLITTERTIND GLITTERTIND 2463
-+omap_zoom3 MACH_OMAP_ZOOM3 OMAP_ZOOM3 2464
-+omap_3630sdp MACH_OMAP_3630SDP OMAP_3630SDP 2465
-+cybook2440 MACH_CYBOOK2440 CYBOOK2440 2466
-+torino_s MACH_TORINO_S TORINO_S 2467
-+havana MACH_HAVANA HAVANA 2468
-+beaumont_11 MACH_BEAUMONT_11 BEAUMONT_11 2469
-+vanguard MACH_VANGUARD VANGUARD 2470
-+s5pc110_draco MACH_S5PC110_DRACO S5PC110_DRACO 2471
-+cartesio_two MACH_CARTESIO_TWO CARTESIO_TWO 2472
-+aster MACH_ASTER ASTER 2473
-+voguesv210 MACH_VOGUESV210 VOGUESV210 2474
-+acm500x MACH_ACM500X ACM500X 2475
-+km9260 MACH_KM9260 KM9260 2476
-+nideflexg1 MACH_NIDEFLEXG1 NIDEFLEXG1 2477
-+ctera_plug_io MACH_CTERA_PLUG_IO CTERA_PLUG_IO 2478
-+smartq7 MACH_SMARTQ7 SMARTQ7 2479
-+at91sam9g10ek2 MACH_AT91SAM9G10EK2 AT91SAM9G10EK2 2480
-+asusp527 MACH_ASUSP527 ASUSP527 2481
-+at91sam9g20mpm2 MACH_AT91SAM9G20MPM2 AT91SAM9G20MPM2 2482
-+topasa900 MACH_TOPASA900 TOPASA900 2483
-+electrum_100 MACH_ELECTRUM_100 ELECTRUM_100 2484
-+mx51grb MACH_MX51GRB MX51GRB 2485
-+xea300 MACH_XEA300 XEA300 2486
-+htcstartrek MACH_HTCSTARTREK HTCSTARTREK 2487
-+lima MACH_LIMA LIMA 2488
-+csb740 MACH_CSB740 CSB740 2489
-+usb_s8815 MACH_USB_S8815 USB_S8815 2490
-+watson_efm_plugin MACH_WATSON_EFM_PLUGIN WATSON_EFM_PLUGIN 2491
-+milkyway MACH_MILKYWAY MILKYWAY 2492
-+g4evm MACH_G4EVM G4EVM 2493
-+picomod6 MACH_PICOMOD6 PICOMOD6 2494
-+omapl138_hawkboard MACH_OMAPL138_HAWKBOARD OMAPL138_HAWKBOARD 2495
-+ip6000 MACH_IP6000 IP6000 2496
-+ip6010 MACH_IP6010 IP6010 2497
-+utm400 MACH_UTM400 UTM400 2498
-+omap3_zybex MACH_OMAP3_ZYBEX OMAP3_ZYBEX 2499
-+wireless_space MACH_WIRELESS_SPACE WIRELESS_SPACE 2500
-+sx560 MACH_SX560 SX560 2501
-+ts41x MACH_TS41X TS41X 2502
-+elphel10373 MACH_ELPHEL10373 ELPHEL10373 2503
-+rhobot MACH_RHOBOT RHOBOT 2504
-+mx51_refresh MACH_MX51_REFRESH MX51_REFRESH 2505
-+ls9260 MACH_LS9260 LS9260 2506
-+shank MACH_SHANK SHANK 2507
-+qsd8x50_st1 MACH_QSD8X50_ST1 QSD8X50_ST1 2508
-+at91sam9m10ekes MACH_AT91SAM9M10EKES AT91SAM9M10EKES 2509
-+hiram MACH_HIRAM HIRAM 2510
-+phy3250 MACH_PHY3250 PHY3250 2511
-+ea3250 MACH_EA3250 EA3250 2512
-+fdi3250 MACH_FDI3250 FDI3250 2513
-+whitestone MACH_WHITESTONE WHITESTONE 2514
-+at91sam9263nit MACH_AT91SAM9263NIT AT91SAM9263NIT 2515
-+ccmx51 MACH_CCMX51 CCMX51 2516
-+ccmx51js MACH_CCMX51JS CCMX51JS 2517
-+ccwmx51 MACH_CCWMX51 CCWMX51 2518
-+ccwmx51js MACH_CCWMX51JS CCWMX51JS 2519
-+mini6410 MACH_MINI6410 MINI6410 2520
-+tiny6410 MACH_TINY6410 TINY6410 2521
-+nano6410 MACH_NANO6410 NANO6410 2522
-+at572d940hfnldb MACH_AT572D940HFNLDB AT572D940HFNLDB 2523
-+htcleo MACH_HTCLEO HTCLEO 2524
-+avp13 MACH_AVP13 AVP13 2525
-+xxsvideod MACH_XXSVIDEOD XXSVIDEOD 2526
-+vpnext MACH_VPNEXT VPNEXT 2527
-+swarco_itc3 MACH_SWARCO_ITC3 SWARCO_ITC3 2528
-+tx51 MACH_TX51 TX51 2529
-+dolby_cat1021 MACH_DOLBY_CAT1021 DOLBY_CAT1021 2530
-+mx28evk MACH_MX28EVK MX28EVK 2531
-+phoenix260 MACH_PHOENIX260 PHOENIX260 2532
-+uvaca_stork MACH_UVACA_STORK UVACA_STORK 2533
-+smartq5 MACH_SMARTQ5 SMARTQ5 2534
-+all3078 MACH_ALL3078 ALL3078 2535
-+ctera_2bay_ds MACH_CTERA_2BAY_DS CTERA_2BAY_DS 2536
-+siogentoo3 MACH_SIOGENTOO3 SIOGENTOO3 2537
-+epb5000 MACH_EPB5000 EPB5000 2538
-+hy9263 MACH_HY9263 HY9263 2539
-+acer_tempo_m900 MACH_ACER_TEMPO_M900 ACER_TEMPO_M900 2540
-+acer_tempo_dx650 MACH_ACER_TEMPO_DX900 ACER_TEMPO_DX900 2541
-+acer_tempo_x960 MACH_ACER_TEMPO_X960 ACER_TEMPO_X960 2542
-+acer_eten_v900 MACH_ACER_ETEN_V900 ACER_ETEN_V900 2543
-+acer_eten_x900 MACH_ACER_ETEN_X900 ACER_ETEN_X900 2544
-+bonnell MACH_BONNELL BONNELL 2545
-+oht_mx27 MACH_OHT_MX27 OHT_MX27 2546
-+htcquartz MACH_HTCQUARTZ HTCQUARTZ 2547
-+davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
-+c3ax03 MACH_C3AX03 C3AX03 2549
-+mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
-+esyx MACH_ESYX ESYX 2551
-+dove_db2 MACH_DOVE_DB2 DOVE_DB2 2552
-+bulldog MACH_BULLDOG BULLDOG 2553
-+derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554
-+bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555
-+bcmring_evm MACH_BCMRING_EVM BCMRING_EVM 2556
-+bcmring_evm_jazz MACH_BCMRING_EVM_JAZZ BCMRING_EVM_JAZZ 2557
-+bcmring_sp MACH_BCMRING_SP BCMRING_SP 2558
-+bcmring_sv MACH_BCMRING_SV BCMRING_SV 2559
-+bcmring_sv_jazz MACH_BCMRING_SV_JAZZ BCMRING_SV_JAZZ 2560
-+bcmring_tablet MACH_BCMRING_TABLET BCMRING_TABLET 2561
-+bcmring_vp MACH_BCMRING_VP BCMRING_VP 2562
-+bcmring_evm_seikor MACH_BCMRING_EVM_SEIKOR BCMRING_EVM_SEIKOR 2563
-+bcmring_sp_wqvga MACH_BCMRING_SP_WQVGA BCMRING_SP_WQVGA 2564
-+bcmring_custom MACH_BCMRING_CUSTOM BCMRING_CUSTOM 2565
-+acer_s200 MACH_ACER_S200 ACER_S200 2566
-+bt270 MACH_BT270 BT270 2567
-+iseo MACH_ISEO ISEO 2568
-+cezanne MACH_CEZANNE CEZANNE 2569
-+lucca MACH_LUCCA LUCCA 2570
-+supersmart MACH_SUPERSMART SUPERSMART 2571
-+arm11_board MACH_CS_MISANO CS_MISANO 2572
-+magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573
-+emxx MACH_EMXX EMXX 2574
-+outlaw MACH_OUTLAW OUTLAW 2575
-+riot_bei2 MACH_RIOT_BEI2 RIOT_BEI2 2576
-+riot_vox MACH_RIOT_VOX RIOT_VOX 2577
-+riot_x37 MACH_RIOT_X37 RIOT_X37 2578
-+mega25mx MACH_MEGA25MX MEGA25MX 2579
-+benzina2 MACH_BENZINA2 BENZINA2 2580
-+ignite MACH_IGNITE IGNITE 2581
-+foggia MACH_FOGGIA FOGGIA 2582
-+arezzo MACH_AREZZO AREZZO 2583
-+leica_skywalker MACH_LEICA_SKYWALKER LEICA_SKYWALKER 2584
-+jacinto2_jamr MACH_JACINTO2_JAMR JACINTO2_JAMR 2585
-+gts_nova MACH_GTS_NOVA GTS_NOVA 2586
-+p3600 MACH_P3600 P3600 2587
-+dlt2 MACH_DLT2 DLT2 2588
-+df3120 MACH_DF3120 DF3120 2589
-+ecucore_9g20 MACH_ECUCORE_9G20 ECUCORE_9G20 2590
-+nautel_lpc3240 MACH_NAUTEL_LPC3240 NAUTEL_LPC3240 2591
-+glacier MACH_GLACIER GLACIER 2592
-+phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593
-+omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594
-+pca101 MACH_PCA101 PCA101 2595
-+buzzc MACH_BUZZC BUZZC 2596
-+sasie2 MACH_SASIE2 SASIE2 2597
-+davinci_cio MACH_DAVINCI_CIO DAVINCI_CIO 2598
-+smartmeter_dl MACH_SMARTMETER_DL SMARTMETER_DL 2599
-+wzl6410 MACH_WZL6410 WZL6410 2600
-+wzl6410m MACH_WZL6410M WZL6410M 2601
-+wzl6410f MACH_WZL6410F WZL6410F 2602
-+wzl6410i MACH_WZL6410I WZL6410I 2603
-+spacecom1 MACH_SPACECOM1 SPACECOM1 2604
-+pingu920 MACH_PINGU920 PINGU920 2605
-+bravoc MACH_BRAVOC BRAVOC 2606
-+cybo2440 MACH_CYBO2440 CYBO2440 2607
-+vdssw MACH_VDSSW VDSSW 2608
-+romulus MACH_ROMULUS ROMULUS 2609
-+omap_magic MACH_OMAP_MAGIC OMAP_MAGIC 2610
-+eltd100 MACH_ELTD100 ELTD100 2611
-+capc7117 MACH_CAPC7117 CAPC7117 2612
-+swan MACH_SWAN SWAN 2613
-+veu MACH_VEU VEU 2614
-+rm2 MACH_RM2 RM2 2615
-+tt2100 MACH_TT2100 TT2100 2616
-+venice MACH_VENICE VENICE 2617
-+pc7323 MACH_PC7323 PC7323 2618
-+masp MACH_MASP MASP 2619
-+fujitsu_tvstbsoc0 MACH_FUJITSU_TVSTBSOC FUJITSU_TVSTBSOC 2620
-+fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621
-+lexikon MACH_LEXIKON LEXIKON 2622
-+mini2440v2 MACH_MINI2440V2 MINI2440V2 2623
-+icontrol MACH_ICONTROL ICONTROL 2624
-+sheevad MACH_SHEEVAD SHEEVAD 2625
-+qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626
-+qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627
-+bee MACH_BEE BEE 2628
-+mx23evk MACH_MX23EVK MX23EVK 2629
-+ap4evb MACH_AP4EVB AP4EVB 2630
-+stockholm MACH_STOCKHOLM STOCKHOLM 2631
-+lpc_h3131 MACH_LPC_H3131 LPC_H3131 2632
-+stingray MACH_STINGRAY STINGRAY 2633
-+kraken MACH_KRAKEN KRAKEN 2634
-+gw2388 MACH_GW2388 GW2388 2635
-+jadecpu MACH_JADECPU JADECPU 2636
-+carlisle MACH_CARLISLE CARLISLE 2637
-+lux_sf9 MACH_LUX_SFT9 LUX_SFT9 2638
-+nemid_tb MACH_NEMID_TB NEMID_TB 2639
-+terrier MACH_TERRIER TERRIER 2640
-+turbot MACH_TURBOT TURBOT 2641
-+sanddab MACH_SANDDAB SANDDAB 2642
-+mx35_cicada MACH_MX35_CICADA MX35_CICADA 2643
-+ghi2703d MACH_GHI2703D GHI2703D 2644
-+lux_sfx9 MACH_LUX_SFX9 LUX_SFX9 2645
-+lux_sf9g MACH_LUX_SF9G LUX_SF9G 2646
-+lux_edk9 MACH_LUX_EDK9 LUX_EDK9 2647
-+hw90240 MACH_HW90240 HW90240 2648
-+dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649
-+mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
-+scat110 MACH_SCAT110 SCAT110 2651
-+acer_a1 MACH_ACER_A1 ACER_A1 2652
-+cmcontrol MACH_CMCONTROL CMCONTROL 2653
-+pelco_lamar MACH_PELCO_LAMAR PELCO_LAMAR 2654
-+rfp43 MACH_RFP43 RFP43 2655
-+sk86r0301 MACH_SK86R0301 SK86R0301 2656
-+ctpxa MACH_CTPXA CTPXA 2657
-+epb_arm9_a MACH_EPB_ARM9_A EPB_ARM9_A 2658
-+guruplug MACH_GURUPLUG GURUPLUG 2659
-+spear310 MACH_SPEAR310 SPEAR310 2660
-+spear320 MACH_SPEAR320 SPEAR320 2661
-+robotx MACH_ROBOTX ROBOTX 2662
-+lsxhl MACH_LSXHL LSXHL 2663
-+smartlite MACH_SMARTLITE SMARTLITE 2664
-+cws2 MACH_CWS2 CWS2 2665
-+m619 MACH_M619 M619 2666
-+smartview MACH_SMARTVIEW SMARTVIEW 2667
-+lsa_salsa MACH_LSA_SALSA LSA_SALSA 2668
-+kizbox MACH_KIZBOX KIZBOX 2669
-+htccharmer MACH_HTCCHARMER HTCCHARMER 2670
-+guf_neso_lt MACH_GUF_NESO_LT GUF_NESO_LT 2671
-+pm9g45 MACH_PM9G45 PM9G45 2672
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-print-some-more-info-from-atmel_nand.c.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-print-some-more-info-from-atmel_nand.c.patch
new file mode 100644
index 0000000..f017ab3
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0002-print-some-more-info-from-atmel_nand.c.patch
@@ -0,0 +1,42 @@
+From aad3bcfce153c15b8e6fb983ee1d27be4c0977cf Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 2 Mar 2010 01:17:56 +0200
+Subject: [[PATCH 02/22] print some more info from atmel_nand.c
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ drivers/mtd/nand/atmel_nand.c | 9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
+index f6dad3d..c974a56 100644
+--- a/drivers/mtd/nand/atmel_nand.c
++++ b/drivers/mtd/nand/atmel_nand.c
+@@ -411,6 +411,8 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
+ res = -EIO;
+ goto err_nand_ioremap;
+ }
++ printk(KERN_ERR "atmel_nand: nand chip ioremap 0x%08x(Physical) to 0x%08x(virtual) length 0x%08x\n",
++ mem->start, host->io_base, mem->end - mem->start + 1);
+
+ mtd = &host->mtd;
+ nand_chip = &host->nand_chip;
+@@ -515,9 +517,12 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
+ }
+ }
+
+- printk(KERN_INFO "AT91 NAND: %i-bit, %s ECC\n",
++ printk(KERN_INFO "AT91 NAND: %i-bit, %s ECC, Sizes: %d page, %d erase block, %d oob \n",
+ (nand_chip->options & NAND_BUSWIDTH_16) ? 16 : 8,
+- ecc_modes[nand_chip->ecc.mode]
++ ecc_modes[nand_chip->ecc.mode],
++ mtd->writesize,
++ mtd->erasesize,
++ mtd->oobsize
+ );
+
+ /* second phase scan */
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-add-newline-at-the-end-of-uncorrectable-error.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-add-newline-at-the-end-of-uncorrectable-error.patch
new file mode 100644
index 0000000..5084860
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-add-newline-at-the-end-of-uncorrectable-error.patch
@@ -0,0 +1,27 @@
+From 0a1acf72583729d1fcffe362278f87d248e2fcd5 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 2 Mar 2010 01:19:44 +0200
+Subject: [[PATCH 03/22] add newline at the end of uncorrectable error :
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ drivers/mtd/nand/nand_ecc.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c
+index 868147a..958bf49 100644
+--- a/drivers/mtd/nand/nand_ecc.c
++++ b/drivers/mtd/nand/nand_ecc.c
+@@ -492,7 +492,7 @@ int nand_correct_data(struct mtd_info *mtd, unsigned char *buf,
+ if ((bitsperbyte[b0] + bitsperbyte[b1] + bitsperbyte[b2]) == 1)
+ return 1; /* error in ecc data; no action needed */
+
+- printk(KERN_ERR "uncorrectable error : ");
++ printk(KERN_ERR "uncorrectable error : \n");
+ return -1;
+ }
+ EXPORT_SYMBOL(nand_correct_data);
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-print-some-more-info-from-atmel_nand.c.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-print-some-more-info-from-atmel_nand.c.patch
deleted file mode 100644
index 910a597..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0003-print-some-more-info-from-atmel_nand.c.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From ccbca3b163447d30352ddb94388693b320864bfc Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:17:56 +0200
-Subject: [PATCH] print some more info from atmel_nand.c
-
----
- drivers/mtd/nand/atmel_nand.c | 9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
-index f6dad3d..c974a56 100644
---- a/drivers/mtd/nand/atmel_nand.c
-+++ b/drivers/mtd/nand/atmel_nand.c
-@@ -411,6 +411,8 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
- res = -EIO;
- goto err_nand_ioremap;
- }
-+ printk(KERN_ERR "atmel_nand: nand chip ioremap 0x%08x(Physical) to 0x%08x(virtual) length 0x%08x\n",
-+ mem->start, host->io_base, mem->end - mem->start + 1);
-
- mtd = &host->mtd;
- nand_chip = &host->nand_chip;
-@@ -515,9 +517,12 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
- }
- }
-
-- printk(KERN_INFO "AT91 NAND: %i-bit, %s ECC\n",
-+ printk(KERN_INFO "AT91 NAND: %i-bit, %s ECC, Sizes: %d page, %d erase block, %d oob \n",
- (nand_chip->options & NAND_BUSWIDTH_16) ? 16 : 8,
-- ecc_modes[nand_chip->ecc.mode]
-+ ecc_modes[nand_chip->ecc.mode],
-+ mtd->writesize,
-+ mtd->erasesize,
-+ mtd->oobsize
- );
-
- /* second phase scan */
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-Add-CompactFlash-to-at91sam9g45-architecture.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-Add-CompactFlash-to-at91sam9g45-architecture.patch
new file mode 100644
index 0000000..dc0a90f
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-Add-CompactFlash-to-at91sam9g45-architecture.patch
@@ -0,0 +1,145 @@
+From 72b2a5ec84c688d9be0e398b2007d22aa360ab3c Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 2 Mar 2010 01:51:37 +0200
+Subject: [[PATCH 04/22] Add CompactFlash to at91sam9g45 architecture
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/at91sam9g45_devices.c | 106 ++++++++++++++++++++++++++++++
+ drivers/pcmcia/Kconfig | 2 +-
+ 2 files changed, 107 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
+index 3d9c66e..26d2b72 100644
+--- a/arch/arm/mach-at91/at91sam9g45_devices.c
++++ b/arch/arm/mach-at91/at91sam9g45_devices.c
+@@ -507,6 +507,112 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)
+ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) {}
+ #endif
+
++/* --------------------------------------------------------------------
++ * Compact Flash (PCMCIA or IDE)
++ * --------------------------------------------------------------------
++ */
++
++#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
++ defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
++
++static struct at91_cf_data cf0_data;
++
++static struct resource cf0_resources[] = {
++ [0] = {
++ .start = AT91_CHIPSELECT_4,
++ .end = AT91_CHIPSELECT_4 + SZ_256M - 1,
++ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
++ }
++};
++
++static struct platform_device cf0_device = {
++ .id = 0,
++ .dev = {
++ .platform_data = &cf0_data,
++ },
++ .resource = cf0_resources,
++ .num_resources = ARRAY_SIZE(cf0_resources),
++};
++
++static struct at91_cf_data cf1_data;
++
++static struct resource cf1_resources[] = {
++ [0] = {
++ .start = AT91_CHIPSELECT_5,
++ .end = AT91_CHIPSELECT_5 + SZ_256M - 1,
++ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
++ }
++};
++
++static struct platform_device cf1_device = {
++ .id = 1,
++ .dev = {
++ .platform_data = &cf1_data,
++ },
++ .resource = cf1_resources,
++ .num_resources = ARRAY_SIZE(cf1_resources),
++};
++
++void __init at91_add_device_cf(struct at91_cf_data *data)
++{
++ unsigned long csa;
++ struct platform_device *pdev;
++
++ if (!data)
++ return;
++
++ /*
++ * assign CS4 or CS5 to SMC with Compact Flash logic support,
++ * we assume SMC timings are configured by board code,
++ * except True IDE where timings are controlled by driver
++ */
++ csa = at91_sys_read(AT91_MATRIX_EBICSA);
++ switch (data->chipselect) {
++ case 4:
++ at91_set_A_periph(AT91_PIN_PC10, 0); /* EBI0_NCS4/CFCS0 */
++ csa |= AT91_MATRIX_EBI_CS4A_SMC_CF0;
++ cf0_data = *data;
++ pdev = &cf0_device;
++ break;
++ case 5:
++ at91_set_A_periph(AT91_PIN_PC11, 0); /* EBI0_NCS5/CFCS1 */
++ csa |= AT91_MATRIX_EBI_CS5A_SMC_CF1;
++ cf1_data = *data;
++ pdev = &cf1_device;
++ break;
++ default:
++ printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
++ data->chipselect);
++ return;
++ }
++ at91_sys_write(AT91_MATRIX_EBICSA, csa);
++
++ if (data->det_pin) {
++ at91_set_gpio_input(data->det_pin, 1);
++ at91_set_deglitch(data->det_pin, 1);
++ }
++
++ if (data->irq_pin) {
++ at91_set_gpio_input(data->irq_pin, 1);
++ at91_set_deglitch(data->irq_pin, 1);
++ }
++
++ if (data->vcc_pin)
++ /* initially off */
++ at91_set_gpio_output(data->vcc_pin, 0);
++
++ /* enable EBI controlled pins */
++ at91_set_A_periph(AT91_PIN_PC15, 0); /* NWAIT */
++ at91_set_A_periph(AT91_PIN_PC8, 0); /* CFCE1 */
++ at91_set_A_periph(AT91_PIN_PC9, 0); /* CFCE2 */
++ at91_set_A_periph(AT91_PIN_PC12, 0); /* CFNRW */
++
++ pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
++ platform_device_register(pdev);
++}
++#else
++void __init at91_add_device_cf(struct at91_cf_data *data) {}
++#endif
+
+ /* --------------------------------------------------------------------
+ * NAND / SmartMedia
+diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig
+index e42d141..5790c67 100644
+--- a/drivers/pcmcia/Kconfig
++++ b/drivers/pcmcia/Kconfig
+@@ -270,7 +270,7 @@ config BFIN_CFPCMCIA
+
+ config AT91_CF
+ tristate "AT91 CompactFlash Controller"
+- depends on PCMCIA && (ARCH_AT91RM9200 || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
++ depends on PCMCIA && (ARCH_AT91RM9200 || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20 || ARCH_AT91SAM9G45)
+ help
+ Say Y here to support the CompactFlash controller on AT91 chips.
+ Or choose M to compile the driver as a module named "at91_cf".
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-add-newline-at-the-end-of-uncorrectable-error.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-add-newline-at-the-end-of-uncorrectable-error.patch
deleted file mode 100644
index 397138f..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0004-add-newline-at-the-end-of-uncorrectable-error.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9581bc758367d20b9d0eedc9e4c5c678ebd6ba36 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:19:44 +0200
-Subject: [PATCH] add newline at the end of uncorrectable error :
-
----
- drivers/mtd/nand/nand_ecc.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c
-index 868147a..958bf49 100644
---- a/drivers/mtd/nand/nand_ecc.c
-+++ b/drivers/mtd/nand/nand_ecc.c
-@@ -492,7 +492,7 @@ int nand_correct_data(struct mtd_info *mtd, unsigned char *buf,
- if ((bitsperbyte[b0] + bitsperbyte[b1] + bitsperbyte[b2]) == 1)
- return 1; /* error in ecc data; no action needed */
-
-- printk(KERN_ERR "uncorrectable error : ");
-+ printk(KERN_ERR "uncorrectable error : \n");
- return -1;
- }
- EXPORT_SYMBOL(nand_correct_data);
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-Add-CompactFlash-to-at91sam9g45-architecture.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-Add-CompactFlash-to-at91sam9g45-architecture.patch
deleted file mode 100644
index e970520..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-Add-CompactFlash-to-at91sam9g45-architecture.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 2297a86fcf8d9e2ecceee3d0905a8f054d91e9a5 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:51:37 +0200
-Subject: [PATCH] Add CompactFlash to at91sam9g45 architecture
-
----
- arch/arm/mach-at91/at91sam9g45_devices.c | 106 ++++++++++++++++++++++++++++++
- drivers/pcmcia/Kconfig | 2 +-
- 2 files changed, 107 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
-index 3d9c66e..26d2b72 100644
---- a/arch/arm/mach-at91/at91sam9g45_devices.c
-+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
-@@ -507,6 +507,112 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)
- void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) {}
- #endif
-
-+/* --------------------------------------------------------------------
-+ * Compact Flash (PCMCIA or IDE)
-+ * --------------------------------------------------------------------
-+ */
-+
-+#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
-+ defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
-+
-+static struct at91_cf_data cf0_data;
-+
-+static struct resource cf0_resources[] = {
-+ [0] = {
-+ .start = AT91_CHIPSELECT_4,
-+ .end = AT91_CHIPSELECT_4 + SZ_256M - 1,
-+ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
-+ }
-+};
-+
-+static struct platform_device cf0_device = {
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &cf0_data,
-+ },
-+ .resource = cf0_resources,
-+ .num_resources = ARRAY_SIZE(cf0_resources),
-+};
-+
-+static struct at91_cf_data cf1_data;
-+
-+static struct resource cf1_resources[] = {
-+ [0] = {
-+ .start = AT91_CHIPSELECT_5,
-+ .end = AT91_CHIPSELECT_5 + SZ_256M - 1,
-+ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
-+ }
-+};
-+
-+static struct platform_device cf1_device = {
-+ .id = 1,
-+ .dev = {
-+ .platform_data = &cf1_data,
-+ },
-+ .resource = cf1_resources,
-+ .num_resources = ARRAY_SIZE(cf1_resources),
-+};
-+
-+void __init at91_add_device_cf(struct at91_cf_data *data)
-+{
-+ unsigned long csa;
-+ struct platform_device *pdev;
-+
-+ if (!data)
-+ return;
-+
-+ /*
-+ * assign CS4 or CS5 to SMC with Compact Flash logic support,
-+ * we assume SMC timings are configured by board code,
-+ * except True IDE where timings are controlled by driver
-+ */
-+ csa = at91_sys_read(AT91_MATRIX_EBICSA);
-+ switch (data->chipselect) {
-+ case 4:
-+ at91_set_A_periph(AT91_PIN_PC10, 0); /* EBI0_NCS4/CFCS0 */
-+ csa |= AT91_MATRIX_EBI_CS4A_SMC_CF0;
-+ cf0_data = *data;
-+ pdev = &cf0_device;
-+ break;
-+ case 5:
-+ at91_set_A_periph(AT91_PIN_PC11, 0); /* EBI0_NCS5/CFCS1 */
-+ csa |= AT91_MATRIX_EBI_CS5A_SMC_CF1;
-+ cf1_data = *data;
-+ pdev = &cf1_device;
-+ break;
-+ default:
-+ printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
-+ data->chipselect);
-+ return;
-+ }
-+ at91_sys_write(AT91_MATRIX_EBICSA, csa);
-+
-+ if (data->det_pin) {
-+ at91_set_gpio_input(data->det_pin, 1);
-+ at91_set_deglitch(data->det_pin, 1);
-+ }
-+
-+ if (data->irq_pin) {
-+ at91_set_gpio_input(data->irq_pin, 1);
-+ at91_set_deglitch(data->irq_pin, 1);
-+ }
-+
-+ if (data->vcc_pin)
-+ /* initially off */
-+ at91_set_gpio_output(data->vcc_pin, 0);
-+
-+ /* enable EBI controlled pins */
-+ at91_set_A_periph(AT91_PIN_PC15, 0); /* NWAIT */
-+ at91_set_A_periph(AT91_PIN_PC8, 0); /* CFCE1 */
-+ at91_set_A_periph(AT91_PIN_PC9, 0); /* CFCE2 */
-+ at91_set_A_periph(AT91_PIN_PC12, 0); /* CFNRW */
-+
-+ pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
-+ platform_device_register(pdev);
-+}
-+#else
-+void __init at91_add_device_cf(struct at91_cf_data *data) {}
-+#endif
-
- /* --------------------------------------------------------------------
- * NAND / SmartMedia
-diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig
-index e42d141..5790c67 100644
---- a/drivers/pcmcia/Kconfig
-+++ b/drivers/pcmcia/Kconfig
-@@ -270,7 +270,7 @@ config BFIN_CFPCMCIA
-
- config AT91_CF
- tristate "AT91 CompactFlash Controller"
-- depends on PCMCIA && (ARCH_AT91RM9200 || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
-+ depends on PCMCIA && (ARCH_AT91RM9200 || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20 || ARCH_AT91SAM9G45)
- help
- Say Y here to support the CompactFlash controller on AT91 chips.
- Or choose M to compile the driver as a module named "at91_cf".
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
new file mode 100644
index 0000000..547a90c
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0005-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
@@ -0,0 +1,62 @@
+From 481c2a19d16f8d11b220a6d626a1e5c50ac8b08e Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 2 Mar 2010 01:54:36 +0200
+Subject: [[PATCH 05/22] pm9g45 system ram can be on CS1 or CS6
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/Makefile.boot | 10 ++++++++++
+ arch/arm/mach-at91/include/mach/at91sam9g45.h | 17 +++++++++++++++++
+ 2 files changed, 27 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-at91/Makefile.boot b/arch/arm/mach-at91/Makefile.boot
+index ced8bdc..d74f5ab 100644
+--- a/arch/arm/mach-at91/Makefile.boot
++++ b/arch/arm/mach-at91/Makefile.boot
+@@ -20,3 +20,13 @@ else
+ params_phys-y := 0x20000100
+ initrd_phys-y := 0x20410000
+ endif
++
++ifeq ($(CONFIG_PM9G45_SYSTEM_RAM_CS1),y)
++ zreladdr-y := 0x20008000
++ params_phys-y := 0x20000100
++ initrd_phys-y := 0x20410000
++else ifeq ($(CONFIG_PM9G45_SYSTEM_RAM_CS6),y)
++ zreladdr-y := 0x70008000
++ params_phys-y := 0x70000100
++ initrd_phys-y := 0x70410000
++endif
+diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+index a526869..324d876 100644
+--- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
++++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+@@ -131,7 +131,24 @@
+ #define AT91SAM9G45_EHCI_BASE 0x00800000 /* USB Host controller (EHCI) */
+ #define AT91SAM9G45_VDEC_BASE 0x00900000 /* Video Decoder Controller */
+
++/*
++ * This one should have a better place, it is a board dependent.
++ */
++#if defined(CONFIG_MACH_AT91SAM9G45EKES)
++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
++#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_1
++#define CONFIG_DRAM_SIZE SZ_128M
++#define CONFIG_VRAM_BASE AT91_CHIPSELECT_6
++#define CONFIG_VRAM_SIZE SZ_64M
++#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
++#define CONFIG_DRAM_SIZE SZ_64M
++#define CONFIG_VRAM_BASE AT91_CHIPSELECT_1
++#define CONFIG_VRAM_SIZE_ SZ_128M
++#else
++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
++#endif
+
+ #define CONSISTENT_DMA_SIZE SZ_4M
+
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-add-board-pm9g45.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-add-board-pm9g45.patch
new file mode 100644
index 0000000..3e838c4
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-add-board-pm9g45.patch
@@ -0,0 +1,1005 @@
+From b1cdc0481a5a228124de3b9319fd0a7c6ebb9e23 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 19 Oct 2010 17:19:20 +0300
+Subject: [[PATCH 06/22] add board pm9g45
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/Kconfig | 73 +++-
+ arch/arm/mach-at91/Makefile | 1 +
+ arch/arm/mach-at91/board-pm9g45.c | 874 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 946 insertions(+), 2 deletions(-)
+ create mode 100644 arch/arm/mach-at91/board-pm9g45.c
+
+diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
+index 04c6c4c..ab7e4e2 100644
+--- a/arch/arm/mach-at91/Kconfig
++++ b/arch/arm/mach-at91/Kconfig
+@@ -413,6 +413,75 @@ config MACH_AT91SAM9G45EKES
+ "ES" at the end of the name means that this board is an
+ Engineering Sample.
+
++config MACH_PM9G45
++ bool "Ronetix PM9G45 Evaluation Kit"
++ depends on ARCH_AT91SAM9G45
++ help
++ Select this if you are using Ronetix's PM9G45 board.
++ <http://ronetix.at/starter_kit_9g45.html>
++choice
++ prompt "System RAM base address"
++ depends on MACH_PM9G45
++ help
++ AT91SAM9G45 has two DDR2 controlers, one CS1 on 0x20000000
++ and CS6 on 0x70000000 memmory addresses. You can choose
++ the where th system RAM to be.
++
++config PM9G45_SYSTEM_RAM_CS1
++ bool "System RAM: CS1 on 0x20000000 with 128MB"
++ depends on MACH_PM9G45
++ help
++ CS1 will be used for system ram and CS6 for video memory.
++
++config PM9G45_SYSTEM_RAM_CS6
++ bool "System RAM: CS6 on 0x70000000"
++ depends on MACH_PM9G45
++ help
++ CS6 will be used for system ram and for video ram.
++
++endchoice
++
++config VRAM_SIZE
++ prompt "Video RAM size"
++ depends on (MACH_PM9G45 && PM9G45_SYSTEM_RAM_CS6)
++ hex
++ help
++ Determine the size of ram for video. It will be located at the end of CS6.
++ default 0x400000
++
++choice
++ prompt "LCD Display"
++
++config PM9G45_LCD_TX09D70
++ bool "3.5\", 320x240 Hitachi TX09D70"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_RA158
++ bool "4.3\", 800x480 Seiko RA158"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_TCG057VGLAC
++ bool "5.7\", 640x480 Kyocera TCG057VGLAC"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_GTTV57NN771E0
++ bool "5.7\", 640x480 Solomon GTTV57NN771E0"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_GLAA057VA01CW
++ bool "5.7\", 640x480 CPT CLAA057VA01CW"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_GATW70SN8H1E0
++ bool "7.0\", 800x480 Solomon GATW70SN8H1E0"
++ depends on MACH_PM9G45
++
++config PM9G45_LCD_CLAA080MB0ACW
++ bool "8.0\", 800x600 CPT CLAA080MB0ACW"
++ depends on MACH_PM9G45
++
++endchoice
++
+ endif
+
+ # ----------------------------------------------------------
+@@ -483,13 +552,13 @@ comment "AT91 Board Options"
+
+ config MTD_AT91_DATAFLASH_CARD
+ bool "Enable DataFlash Card support"
+- depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926)
++ depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926 || MACH_PM9G45)
+ help
+ Enable support for the DataFlash card.
+
+ config MTD_NAND_ATMEL_BUSWIDTH_16
+ bool "Enable 16-bit data bus interface to NAND flash"
+- depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK || MACH_AT572D940HFEB)
++ depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_PM9G45)
+ help
+ On AT91SAM926x boards both types of NAND flash can be present
+ (8 and 16 bit data bus width).
+diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
+index 6ccaba5..11e1d5e 100644
+--- a/arch/arm/mach-at91/Makefile
++++ b/arch/arm/mach-at91/Makefile
+@@ -74,6 +74,7 @@ obj-$(CONFIG_MACH_SBC35_A9G20) += board-sbc35-a9g20.o
+ # AT91SAM9G45 board-specific support
+ obj-$(CONFIG_MACH_AT91SAM9G45EKES) += board-sam9m10g45ek.o
+ obj-$(CONFIG_MACH_AT91SAM9M10EKES) += board-sam9m10g45ek.o
++obj-$(CONFIG_MACH_PM9G45) += board-pm9g45.o
+
+ # AT91CAP9 board-specific support
+ obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+new file mode 100644
+index 0000000..aa64b39
+--- /dev/null
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -0,0 +1,874 @@
++/*
++ * Board-specific setup code for the AT91SAM9M10G45 Evaluation Kit family
++ *
++ * Covers: * AT91SAM9G45-EKES board
++ * * AT91SAM9M10G45-EK board
++ *
++ * Copyright (C) 2009 Atmel Corporation.
++ *
++ * 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.
++ *
++ */
++/*
++ * Based on board-sam9m10g45ek.c
++ * filename: board-pm9g45.c
++ * date: 05.02.2010
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/ads7846.h>
++#include <linux/fb.h>
++#include <linux/gpio_keys.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <linux/clk.h>
++#include <linux/w1-gpio.h>
++#include <linux/atmel-mci.h>
++
++#include <mach/hardware.h>
++#include <video/atmel_lcdc.h>
++
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <mach/at91sam9g45_matrix.h>
++
++#include <mach/hardware.h>
++#include <mach/board.h>
++#include <mach/gpio.h>
++#include <mach/at91sam9_smc.h>
++#include <mach/at91_shdwc.h>
++
++#include "sam9_smc.h"
++#include "generic.h"
++
++static void __init pm9g45_map_io(void)
++{
++ /* Initialize processor: 12.000 MHz crystal */
++ at91sam9g45_initialize(12000000);
++
++ /* DGBU on ttyS0. (Rx & Tx only) */
++ at91_register_uart(0, 0, 0);
++
++ /* USART0 not connected on the -EK board */
++ /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
++ at91_register_uart(AT91SAM9G45_ID_US1, 2,
++ ATMEL_UART_CTS | ATMEL_UART_RTS);
++
++ /* set serial console to ttyS0 (ie, DBGU) */
++ at91_set_serial_console(0);
++}
++
++static void __init pm9g45_init_irq(void)
++{
++ at91sam9g45_init_interrupts(NULL);
++}
++
++/*
++ * USB HS Host port (common to OHCI & EHCI)
++ */
++static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
++ .ports = 2,
++ .vbus_pin = { 0, 0},
++};
++
++/*
++ * USB HS Device port
++ */
++static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
++ .vbus_pin = AT91_PIN_PD1,
++};
++
++/*
++ * ADS7846 Touchscreen
++ */
++#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
++ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
++static int ads7843_pendown_state(void)
++{
++ return !at91_get_gpio_value(AT91_PIN_PD18); /* Touchscreen PENIRQ */
++}
++
++static struct ads7846_platform_data ads_info = {
++ .model = 7843,
++ .x_min = 150,
++ .x_max = 3830,
++ .y_min = 190,
++ .y_max = 3830,
++ .settle_delay_usecs = 2000,
++ .keep_vref_on = 1,
++ .vref_delay_usecs = 500,
++ .x_plate_ohms = 607,
++ .y_plate_ohms = 232,
++ .pressure_max = 15000,
++ .debounce_max = 1,
++ .debounce_rep = 1, //0
++ .debounce_tol = (50), //(~0)
++ .get_pendown_state = ads7843_pendown_state,
++ .penirq_recheck_delay_usecs = 200,
++};
++
++static void __init pm9g45_add_device_ts(void)
++{
++ at91_set_gpio_input(AT91_PIN_PD18, 1); /* External IRQ, with pullup */
++ at91_set_gpio_input(AT91_PIN_PE31, 1); /* Touchscreen BUSY signal */
++}
++#else
++static void __init pm9g45_add_device_ts(void) {}
++#endif
++static struct at91_tsadcc_data pm9g45_tsadcc_data = {
++ .adc_clock = 300000,
++ .pendet_debounce = 0x0d,
++ .ts_sample_hold_time = 0x0a,
++};
++
++/*
++ * SPI devices.
++ */
++static struct spi_board_info pm9g45_spi_devices[] = {
++#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
++ { /* DataFlash card */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ .bus_num = 0,
++ },
++#endif
++#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
++ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
++ {
++ .modalias = "ads7846",
++ .chip_select = 0,
++ .max_speed_hz = 125000 * 16, /* max sample rate * clocks per sample */
++ .bus_num = 1,
++ .platform_data = &ads_info,
++ .irq = AT91_PIN_PD18,
++ },
++#endif
++};
++
++/*
++ * MCI (SD/MMC)
++ */
++static struct mci_platform_data __initdata pm9g45_mci0_data = {
++ .slot[0] = {
++ .bus_width = 4,
++ .detect_pin = AT91_PIN_PD30,
++ .wp_pin = AT91_PIN_PD29,
++ // .vcc_pin = ... not connected
++ }
++};
++
++/*
++ * MACB Ethernet device
++ */
++static struct at91_eth_data __initdata pm9g45_macb_data = {
++ .phy_irq_pin = AT91_PIN_PD5,
++ .is_rmii = 1,
++};
++
++/*
++ * NAND flash
++ */
++static struct mtd_partition __initdata pm9g45_nand_partition[] = {
++ {
++ .name = "Partition 1",
++ .offset = 0,
++ .size = MTDPART_SIZ_FULL,
++ },
++
++};
++
++static struct mtd_partition * __init nand_partitions(int size,
++ int *num_partitions)
++{
++ *num_partitions = ARRAY_SIZE(pm9g45_nand_partition);
++ return pm9g45_nand_partition;
++}
++
++/* det_pin is not connected */
++static struct atmel_nand_data __initdata pm9g45_nand_data = {
++ .ale = 21,
++ .cle = 22,
++ // .det_pin = ... not connected
++ .rdy_pin = AT91_PIN_PD3,
++// .rdy_pin_active_low = 0,
++ .enable_pin = AT91_PIN_PC14,
++ .partition_info = nand_partitions,
++#if defined(CONFIG_MTD_NAND_AT91_BUSWIDTH_16)
++ .bus_width_16 = 1,
++#else
++ .bus_width_16 = 0,
++#endif
++};
++
++static struct sam9_smc_config __initdata pm9g45_nand_smc_config = {
++ .ncs_read_setup = 0,
++ .nrd_setup = 1,
++ .ncs_write_setup = 0,
++ .nwe_setup = 1,
++
++ .ncs_read_pulse = 2, /* 3*/
++ .nrd_pulse = 3, /* 3 */
++ .ncs_write_pulse = 3, /* 3 */
++ .nwe_pulse = 4, /* 3*/
++
++ .read_cycle = 4, /* 5*/
++ .write_cycle = 7, /* 5*/
++
++ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
++ AT91_SMC_EXNWMODE_DISABLE,
++ .tdf_cycles = 3, /* 2*/
++};
++
++static void __init pm9g45_add_device_nand(void)
++{
++ /* setup bus-width (8 or 16) */
++ if (pm9g45_nand_data.bus_width_16)
++ pm9g45_nand_smc_config.mode |= AT91_SMC_DBW_16;
++ else
++ pm9g45_nand_smc_config.mode |= AT91_SMC_DBW_8;
++
++ /* configure chip-select 3 (NAND) */
++ sam9_smc_configure(3, &pm9g45_nand_smc_config);
++
++ at91_add_device_nand(&pm9g45_nand_data);
++}
++
++/*
++ * LCD Controller
++ */
++#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
++
++#define AT91SAM9G45_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
++ | ATMEL_LCDC_DISTYPE_TFT \
++ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
++
++static void at91_lcdc_power_control(int on)
++{
++ at91_set_gpio_value(AT91_PIN_PE6, on);
++}
++
++static u64 lcdc_dmamask = 0xffffffffUL;
++static struct atmel_lcdfb_info lcdc_data;
++
++static struct resource lcdc_resources[] = {
++ [0] = {
++ .start = AT91SAM9G45_LCDC_BASE,
++ .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = CONFIG_VRAM_BASE,
++ .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
++ .flags = IORESOURCE_MEM,
++ },
++ [2] = {
++ .start = AT91SAM9G45_ID_LCDC,
++ .end = AT91SAM9G45_ID_LCDC,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device at91_lcdc_device = {
++ .name = "atmel_lcdfb",
++ .id = 0,
++ .dev = {
++ .dma_mask = &lcdc_dmamask,
++ .coherent_dma_mask = 0xffffffffUL,
++ .platform_data = &lcdc_data,
++ },
++ .resource = lcdc_resources,
++ .num_resources = ARRAY_SIZE(lcdc_resources),
++};
++
++static void __init pm9g45_add_device_lcdc(struct atmel_lcdfb_info *data)
++{
++ if (!data)
++ return;
++
++ at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
++ at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
++ at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */
++ at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */
++
++ at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
++ /* at91_set_A_periph(AT91_PIN_PE7, 0); Not used */ /* LCDD0/LCDD2 */
++ /* at91_set_A_periph(AT91_PIN_PE8, 0); Not used */ /* LCDD1/LCDD3 */
++ at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2_R0 */
++ at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3_R1 */
++ at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4_R2 */
++ at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5_R3 */
++ at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6_R4 */
++ at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7_R5 */
++ /* at91_set_A_periph(AT91_PIN_PE15, 0); Not used */ /* LCDD8/LCDD12 */
++ /* at91_set_A_periph(AT91_PIN_PE16, 0); Not used */ /* LCDD9/LCDD13 */
++ at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10_G0 */
++ at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11_G1 */
++ at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12_G2 */
++ at91_set_A_periph(AT91_PIN_PE20, 0); /* LCDD13_G3 */
++ at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14_G4 */
++ at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15_G5 */
++ /* at91_set_A_periph(AT91_PIN_PE23, 0); Not used */ /* LCDD8/LCDD12 */
++ /* at91_set_A_periph(AT91_PIN_PE24, 0); Not used */ /* LCDD9/LCDD13 */
++ at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18_B0 */
++ at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19_B1 */
++ at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20_B2 */
++ at91_set_A_periph(AT91_PIN_PE28, 0); /* LCDD21_B3 */
++ at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22_B4 */
++ at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23_B5 */
++
++ lcdc_data = *data;
++ platform_device_register(&at91_lcdc_device);
++}
++
++#if defined(CONFIG_PM9G45_LCD_TX09D70)
++/* Hitachi TX09D70VM1CCA - 3.5", 320x240 */
++static struct fb_videomode at91_tft_vga_modes[] = {
++ {
++ .name = "TX09D50VM1CCA @ 60",
++ .refresh = 60,
++ .xres = 240,
++ .yres = 320,
++ .pixclock = KHZ2PICOS(4965),
++ .left_margin = 1,
++ .right_margin = 33,
++ .upper_margin = 1,
++ .lower_margin = 0,
++ .hsync_len = 5,
++ .vsync_len = 1,
++ .sync = FB_SYNC_HOR_HIGH_ACT |
++ FB_SYNC_VERT_HIGH_ACT,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs at91fb_default_monspecs = {
++ .manufacturer = "HIT",
++ .monitor = "TX09D70VM1CCA",
++ .modedb = at91_tft_vga_modes,
++ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
++ .hfmin = 15000,
++ .hfmax = 64000,
++ .vfmin = 50,
++ .vfmax = 150,
++};
++
++/* Driver datas */
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .lcdcon_is_backlight = true,
++ .default_bpp = 16,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &at91fb_default_monspecs,
++ .atmel_lcdfb_power_control = at91_lcdc_power_control,
++ .guard_time = 1,
++ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_RA158)
++/* Seiko RA158 - 4.3", 800x480, 350cd */
++static struct fb_videomode __initdata tft_modes[] = {
++ {
++ .name = "800x480 @ 60",
++ .refresh = 60,
++ .xres = 800,
++ .yres = 480,
++ .pixclock = KHZ2PICOS(10000),
++ .left_margin = 89,
++ .right_margin = 164,
++ .upper_margin = 23,
++ .lower_margin = 10,
++ .hsync_len = 10,
++ .vsync_len = 10,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs __initdata tft_default_monspecs = {
++ .manufacturer = "SEI",
++ .monitor = "RA158Z",
++ .modedb = tft_modes,
++ .modedb_len = ARRAY_SIZE(tft_modes),
++ .hfmin = 10000,
++ .hfmax = 35000,
++ .vfmin = 40,
++ .vfmax = 90,
++ .dclkmax = 35000000,
++};
++
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .default_bpp = 24,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &tft_default_monspecs,
++ .guard_time = 2,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_TCG057VGLAC)
++/* Kyocera TCG057VGLAC - 5.7", 640x480 */
++static struct fb_videomode at91_tft_vga_modes[] = {
++ {
++ .name = "TCG057VGLAC @ 60",
++ .refresh = 60,
++ .xres = 640,
++ .yres = 480,
++ .pixclock = KHZ2PICOS(25000),
++ .hsync_len = 5,
++ .left_margin = 1,
++ .right_margin = 33,
++ .vsync_len = 1,
++ .upper_margin = 4,
++ .lower_margin = 0,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs at91fb_default_monspecs = {
++ .manufacturer = "KYO",
++ .monitor = "TCG057VGLAC",
++ .modedb = at91_tft_vga_modes,
++ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
++ .hfmin = 15000,
++ .hfmax = 64000,
++ .vfmin = 50,
++ .vfmax = 150,
++};
++
++/* Driver datas */
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .lcdcon_is_backlight = true,
++ .default_bpp = 16,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &at91fb_default_monspecs,
++ .atmel_lcdfb_power_control = at91_lcdc_power_control,
++ .guard_time = 1,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_GTTV57NN771E0)
++/* Solomon GTTV57NN771E0 - 5.7", 640x480 */
++static struct fb_videomode at91_tft_vga_modes[] = {
++ {
++ .name = "GTTV57NN771E0 @ 60",
++ .refresh = 60,
++ .xres = 640,
++ .yres = 480,
++ .pixclock = KHZ2PICOS(50000),
++ .hsync_len = 30,
++ .left_margin = 114,
++ .right_margin = 16,
++ .vsync_len = 3,
++ .upper_margin = 32,
++ .lower_margin = 10,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs at91fb_default_monspecs = {
++ .manufacturer = "SGD",
++ .monitor = "GTTV57NN771E0",
++ .modedb = at91_tft_vga_modes,
++ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
++ .hfmin = 10000,
++ .hfmax = 40000,
++ .vfmin = 40,
++ .vfmax = 90,
++};
++
++/* Driver datas */
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .lcdcon_is_backlight = true,
++ .default_bpp = 16,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &at91fb_default_monspecs,
++ .atmel_lcdfb_power_control = at91_lcdc_power_control,
++ .guard_time = 1,
++ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_GLAA057VA01CW)
++/* CPT CLAA057VA01CW - 5.7", 640x480, 220cd */
++static struct fb_videomode __initdata tft_modes[] = {
++ {
++ .name = "640x480 @ 60",
++ .refresh = 60,
++ .xres = 640,
++ .yres = 480,
++ .pixclock = KHZ2PICOS(25000),
++ .left_margin = 45,
++ .right_margin = 114,
++ .upper_margin = 33,
++ .lower_margin = 11,
++ .hsync_len = 1,
++ .vsync_len = 1,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs __initdata tft_default_monspecs = {
++ .manufacturer = "CPT",
++ .monitor = "CLAA057VA01CW",
++ .modedb = tft_modes,
++ .modedb_len = ARRAY_SIZE(tft_modes),
++ .hfmin = 10000,
++ .hfmax = 22350,
++ .vfmin = 40,
++ .vfmax = 90,
++ .dclkmax = 30000000,
++};
++
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .default_bpp = 16,
++ .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &tft_default_monspecs,
++ .guard_time = 2,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_GATW70SN8H1E0)
++/* Solomon GATW70 - 7.0", 800x480, 350cd */
++static struct fb_videomode __initdata tft_modes[] = {
++ {
++ .name = "800x480 @ 60",
++ .refresh = 60,
++ .xres = 800,
++ .yres = 480,
++ .pixclock = KHZ2PICOS(25000),
++ .left_margin = 40,
++ .right_margin = 40,
++ .upper_margin = 29,
++ .lower_margin = 13,
++ .hsync_len = 48,
++ .vsync_len = 3,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs __initdata tft_default_monspecs = {
++ .manufacturer = "SGD",
++ .monitor = "GATW70",
++ .modedb = tft_modes,
++ .modedb_len = ARRAY_SIZE(tft_modes),
++ .hfmin = 10000,
++ .hfmax = 35000,
++ .vfmin = 40,
++ .vfmax = 90,
++ .dclkmax = 35000000,
++};
++
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .default_bpp = 24,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &tft_default_monspecs,
++ .guard_time = 2,
++};
++
++#elif defined(CONFIG_PM9G45_LCD_CLAA080MB0ACW)
++/* CPT CLAA080 - 8.0", 800x600, 250cd */
++static struct fb_videomode __initdata tft_modes[] = {
++ {
++ .name = "800x600 @ 60",
++ .refresh = 60,
++ .xres = 800,
++ .yres = 600,
++ .pixclock = KHZ2PICOS(25000),
++ .left_margin = 0,
++ .right_margin = 216,
++ .upper_margin = 0,
++ .lower_margin = 28,
++ .hsync_len = 0,
++ .vsync_len = 0,
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs __initdata tft_default_monspecs = {
++ .manufacturer = "CPT",
++ .monitor = "CLAA080",
++ .modedb = tft_modes,
++ .modedb_len = ARRAY_SIZE(tft_modes),
++ .hfmin = 10000,
++ .hfmax = 40000,
++ .vfmin = 40,
++ .vfmax = 90,
++ .dclkmax = 40000000,
++};
++
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .default_bpp = 24,
++ .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
++ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
++ .default_monspecs = &tft_default_monspecs,
++ .guard_time = 2,
++};
++
++#else
++#error "Undefined LCD display!"
++#endif
++
++#else
++static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data;
++#endif
++
++/*
++ * GPIO Buttons
++ */
++#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
++static struct gpio_keys_button pm9g45_buttons[] = {
++ { /* SW3 */
++ .code = KEY_UP,
++ .gpio = AT91_PIN_PE8,
++ .active_low = 1,
++ .desc = "SW3",
++ .wakeup = 1,
++ .type = EV_KEY,
++ },
++ { /* SW4 */
++ .code = KEY_RIGHT,
++ .gpio = AT91_PIN_PE7,
++ .active_low = 1,
++ .desc = "SW4",
++ .wakeup = 1,
++ .type = EV_KEY,
++ }
++};
++
++static struct gpio_keys_platform_data pm9g45_button_data = {
++ .buttons = pm9g45_buttons,
++ .nbuttons = ARRAY_SIZE(pm9g45_buttons),
++};
++
++static struct platform_device pm9g45_button_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .num_resources = 0,
++ .dev = {
++ .platform_data = &pm9g45_button_data,
++ }
++};
++
++static void __init pm9g45_add_device_buttons(void)
++{
++ int i;
++
++ printk("at91: pm9g45 registering GPIO buttons\n");
++ platform_device_register(&pm9g45_button_device);
++
++ for (i = 0; i < pm9g45_button_data.nbuttons; i ++) {
++ gpio_to_irq(pm9g45_buttons[i].gpio);
++ at91_set_gpio_input(pm9g45_buttons[i].gpio, 1);
++ at91_set_deglitch(pm9g45_buttons[i].gpio, 1);
++ }
++
++}
++#else
++static void __init pm9g45_add_device_buttons(void) {}
++#endif
++
++/*
++ * AC97
++ */
++static struct ac97c_platform_data pm9g45_ac97_data = {
++ .reset_pin = 0,
++};
++
++/*
++ * LEDs ... these could all be PWM-driven, for variable brightness
++ */
++static struct gpio_led pm9g45_leds[] = {
++ { /* "right" led, green, userled2 (could be driven by pwm2) */
++ .name = "led0",
++ .gpio = AT91_PIN_PD0,
++ .active_low = 1,
++ .default_trigger = "nand-disk",
++ },
++ { /* "power" led, yellow (could be driven by pwm0) */
++ .name = "led1",
++ .gpio = AT91_PIN_PD31,
++ .active_low = 1,
++ .default_trigger = "heartbeat",
++ }
++};
++
++#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
++struct w1_gpio_platform_data pm9g45_w1_platdata = {
++ .pin = AT91_PIN_PA31,
++ .is_open_drain = 0,
++};
++
++static struct platform_device pm9g45_w1_device = {
++ .name = "w1-gpio",
++ .id = 0,
++ .dev = {
++ .platform_data = &pm9g45_w1_platdata,
++ },
++};
++#endif
++
++#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
++ defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
++static struct at91_cf_data pm9g45_cf_data = {
++ .det_pin = AT91_PIN_PD13,
++ .rst_pin = AT91_PIN_PD14,
++ .irq_pin = AT91_PIN_PE1,
++ // .vcc_pin = ... always powered
++ .chipselect = 4,
++};
++
++static struct resource pm9g45_cf_resources[] = {
++ [0] = {
++ .start = AT91_CHIPSELECT_4,
++ .end = AT91_CHIPSELECT_4 + (0x10000000 - 1),
++ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
++ },
++};
++
++static struct platform_device pm9g45_cf_device = {
++ .name = "at91_cf",
++ .id = -1,
++ .dev = {
++ .platform_data = &pm9g45_cf_data,
++ },
++ .resource = pm9g45_cf_resources,
++ .num_resources = ARRAY_SIZE(pm9g45_cf_resources),
++};
++
++#define CF_NWE_SETUP (9 << 0)
++#define CF_NCS_WR_SETUP (2 << 8)
++#define CF_NRD_SETUP (9 << 16)
++#define CF_NCS_RD_SETUP (2 << 24)
++
++#define CF_NWE_PULSE (17 << 0)
++#define CF_NCS_WR_PULSE (27 << 8)
++#define CF_NRD_PULSE (17 << 16)
++#define CF_NCS_RD_PULSE (27 << 24)
++
++#define CF_NWE_CYCLE (40 << 0)
++#define CF_NRD_CYCLE (40 << 16)
++
++#define CF_TDF (1 << 16)
++
++static void __init pm9g45_add_device_cf(void) {
++struct at91_cf_data *data = & pm9g45_cf_data;
++unsigned int csa;
++
++ // Setup Compact flash, first enable the address range of
++ // CS4 in HMATRIX user interface
++ csa = at91_sys_read(AT91_MATRIX_EBICSA);
++ at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS4A_SMC_CF0);
++
++ /* Configure SMC CS4 */
++ at91_sys_write(AT91_SMC_SETUP(4),
++ (CF_NWE_SETUP |
++ CF_NCS_WR_SETUP |
++ CF_NRD_SETUP |
++ CF_NCS_RD_SETUP));
++
++ at91_sys_write(AT91_SMC_PULSE(4), (CF_NWE_PULSE |
++ CF_NCS_WR_PULSE |
++ CF_NRD_PULSE |
++ CF_NCS_RD_PULSE));
++ at91_sys_write(AT91_SMC_CYCLE(4), (CF_NWE_CYCLE | CF_NRD_CYCLE));
++ // 16 bit
++ at91_sys_write (AT91_SMC_MODE(4), (AT91_SMC_READMODE |
++ AT91_SMC_WRITEMODE |
++ AT91_SMC_EXNWMODE_DISABLE |
++ AT91_SMC_DBW_16 |
++ CF_TDF));
++
++ /* input/irq */
++ if (data->irq_pin) {
++ at91_set_gpio_input(data->irq_pin, 0);
++ at91_set_deglitch(data->irq_pin, 1);
++ }
++ at91_set_gpio_input(data->det_pin, 0);
++ at91_set_deglitch(data->det_pin, 1);
++
++ /* outputs, initially off */
++ if (data->vcc_pin)
++ at91_set_gpio_output(data->vcc_pin, 0);
++ if (data->rst_pin)
++ at91_set_gpio_output(data->rst_pin, 0);
++
++ /* force poweron defaults for these pins ... */
++ at91_set_A_periph(AT91_PIN_PC15, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC12, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC10, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC8, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC9, 0); /* */
++
++ platform_device_register(&pm9g45_cf_device);
++}
++#else
++void __init pm9g45_add_device_cf(void) {}
++#endif
++
++static void __init pm9g45_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* USB HS Host */
++ at91_add_device_usbh_ohci(&pm9g45_usbh_hs_data);
++ at91_add_device_usbh_ehci(&pm9g45_usbh_hs_data);
++ /* USB HS Device */
++ //at91_add_device_usba(&pm9g45_usba_udc_data);
++ /* SPI */
++ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
++ /* Touchscreen */
++ pm9g45_add_device_ts();
++ /* at91_add_device_tsadcc(&pm9g45_tsadcc_data); Not used for now */
++ /* MMC */
++ at91_add_device_mci(0, &pm9g45_mci0_data);
++ /* Ethernet */
++ at91_add_device_eth(&pm9g45_macb_data);
++ /* NAND */
++ pm9g45_add_device_nand();
++ /* I2C */
++ /* No I2C used in pm9g45 */
++ /* LCD Controller */
++ pm9g45_add_device_lcdc(&pm9g45_lcdc_data);
++ /* Push Buttons */
++ pm9g45_add_device_buttons();
++ /* AC97 */
++ at91_add_device_ac97(&pm9g45_ac97_data);
++#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
++ platform_device_register(&pm9g45_w1_device);
++#endif
++ /* Compact flash */
++ pm9g45_add_device_cf();
++ /* LEDs */
++ at91_gpio_leds(pm9g45_leds, ARRAY_SIZE(pm9g45_leds));
++}
++
++MACHINE_START(PM9G45, "Ronetix PM9G45")
++ /* Maintainer: Atmel */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91sam926x_timer,
++ .map_io = pm9g45_map_io,
++ .init_irq = pm9g45_init_irq,
++ .init_machine = pm9g45_board_init,
++MACHINE_END
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
deleted file mode 100644
index 164b6a9..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 3a12beee72e77d6cc5657a1f448483e893b401d9 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:54:36 +0200
-Subject: [PATCH] pm9g45 system ram can be on CS1 or CS6
-
----
- arch/arm/mach-at91/Makefile.boot | 10 ++++++++++
- arch/arm/mach-at91/include/mach/at91sam9g45.h | 17 +++++++++++++++++
- 2 files changed, 27 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-at91/Makefile.boot b/arch/arm/mach-at91/Makefile.boot
-index 3462b81..549c529 100644
---- a/arch/arm/mach-at91/Makefile.boot
-+++ b/arch/arm/mach-at91/Makefile.boot
-@@ -16,3 +16,13 @@ else
- params_phys-y := 0x20000100
- initrd_phys-y := 0x20410000
- endif
-+
-+ifeq ($(CONFIG_PM9G45_SYSTEM_RAM_CS1),y)
-+ zreladdr-y := 0x20008000
-+ params_phys-y := 0x20000100
-+ initrd_phys-y := 0x20410000
-+else ifeq ($(CONFIG_PM9G45_SYSTEM_RAM_CS6),y)
-+ zreladdr-y := 0x70008000
-+ params_phys-y := 0x70000100
-+ initrd_phys-y := 0x70410000
-+endif
-diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-index a526869..324d876 100644
---- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
-+++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-@@ -131,7 +131,24 @@
- #define AT91SAM9G45_EHCI_BASE 0x00800000 /* USB Host controller (EHCI) */
- #define AT91SAM9G45_VDEC_BASE 0x00900000 /* Video Decoder Controller */
-
-+/*
-+ * This one should have a better place, it is a board dependent.
-+ */
-+#if defined(CONFIG_MACH_AT91SAM9G45EKES)
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
-+#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_1
-+#define CONFIG_DRAM_SIZE SZ_128M
-+#define CONFIG_VRAM_BASE AT91_CHIPSELECT_6
-+#define CONFIG_VRAM_SIZE SZ_64M
-+#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
-+#define CONFIG_DRAM_SIZE SZ_64M
-+#define CONFIG_VRAM_BASE AT91_CHIPSELECT_1
-+#define CONFIG_VRAM_SIZE_ SZ_128M
-+#else
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
-+#endif
-
- #define CONSISTENT_DMA_SIZE SZ_4M
-
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-add-pm9g45-board.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-add-pm9g45-board.patch
deleted file mode 100644
index 5534b16..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-add-pm9g45-board.patch
+++ /dev/null
@@ -1,1004 +0,0 @@
-From 08b8ed8e5b8964c58daa5335831683f99228bf6a Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:55:54 +0200
-Subject: [PATCH] add pm9g45 board
-
----
- arch/arm/mach-at91/Kconfig | 73 +++-
- arch/arm/mach-at91/Makefile | 1 +
- arch/arm/mach-at91/board-pm9g45.c | 875 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 947 insertions(+), 2 deletions(-)
- create mode 100644 arch/arm/mach-at91/board-pm9g45.c
-
-diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
-index 359b0bc..bebad5b 100644
---- a/arch/arm/mach-at91/Kconfig
-+++ b/arch/arm/mach-at91/Kconfig
-@@ -407,6 +407,75 @@ config MACH_AT91SAM9G45EKES
- "ES" at the end of the name means that this board is an
- Engineering Sample.
-
-+config MACH_PM9G45
-+ bool "Ronetix PM9G45 Evaluation Kit"
-+ depends on ARCH_AT91SAM9G45
-+ help
-+ Select this if you are using Ronetix's PM9G45 board.
-+ <http://ronetix.at/starter_kit_9g45.html>
-+choice
-+ prompt "System RAM base address"
-+ depends on MACH_PM9G45
-+ help
-+ AT91SAM9G45 has two DDR2 controlers, one CS1 on 0x20000000
-+ and CS6 on 0x70000000 memmory addresses. You can choose
-+ the where th system RAM to be.
-+
-+config PM9G45_SYSTEM_RAM_CS1
-+ bool "System RAM: CS1 on 0x20000000 with 128MB"
-+ depends on MACH_PM9G45
-+ help
-+ CS1 will be used for system ram and CS6 for video memory.
-+
-+config PM9G45_SYSTEM_RAM_CS6
-+ bool "System RAM: CS6 on 0x70000000"
-+ depends on MACH_PM9G45
-+ help
-+ CS6 will be used for system ram and for video ram.
-+
-+endchoice
-+
-+config VRAM_SIZE
-+ prompt "Video RAM size"
-+ depends on (MACH_PM9G45 && PM9G45_SYSTEM_RAM_CS6)
-+ hex
-+ help
-+ Determine the size of ram for video. It will be located at the end of CS6.
-+ default 0x400000
-+
-+choice
-+ prompt "LCD Display"
-+
-+config PM9G45_LCD_TX09D70
-+ bool "3.5\", 320x240 Hitachi TX09D70"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_RA158
-+ bool "4.3\", 800x480 Seiko RA158"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_TCG057VGLAC
-+ bool "5.7\", 640x480 Kyocera TCG057VGLAC"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_GTTV57NN771E0
-+ bool "5.7\", 640x480 Solomon GTTV57NN771E0"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_GLAA057VA01CW
-+ bool "5.7\", 640x480 CPT CLAA057VA01CW"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_GATW70SN8H1E0
-+ bool "7.0\", 800x480 Solomon GATW70SN8H1E0"
-+ depends on MACH_PM9G45
-+
-+config PM9G45_LCD_CLAA080MB0ACW
-+ bool "8.0\", 800x600 CPT CLAA080MB0ACW"
-+ depends on MACH_PM9G45
-+
-+endchoice
-+
- endif
-
- # ----------------------------------------------------------
-@@ -461,13 +530,13 @@ comment "AT91 Board Options"
-
- config MTD_AT91_DATAFLASH_CARD
- bool "Enable DataFlash Card support"
-- depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926)
-+ depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926 || MACH_PM9G45)
- help
- Enable support for the DataFlash card.
-
- config MTD_NAND_ATMEL_BUSWIDTH_16
- bool "Enable 16-bit data bus interface to NAND flash"
-- depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK || MACH_AT572D940HFEB)
-+ depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_PM9G45)
- help
- On AT91SAM926x boards both types of NAND flash can be present
- (8 and 16 bit data bus width).
-diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
-index 761098e..ea24437 100644
---- a/arch/arm/mach-at91/Makefile
-+++ b/arch/arm/mach-at91/Makefile
-@@ -72,6 +72,7 @@ obj-$(CONFIG_MACH_SBC35_A9G20) += board-sbc35-a9g20.o
-
- # AT91SAM9G45 board-specific support
- obj-$(CONFIG_MACH_AT91SAM9G45EKES) += board-sam9m10g45ek.o
-+obj-$(CONFIG_MACH_PM9G45) += board-pm9g45.o
-
- # AT91CAP9 board-specific support
- obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o
-diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
-new file mode 100644
-index 0000000..63e5ee1
---- /dev/null
-+++ b/arch/arm/mach-at91/board-pm9g45.c
-@@ -0,0 +1,875 @@
-+/*
-+ * Board-specific setup code for the AT91SAM9M10G45 Evaluation Kit family
-+ *
-+ * Covers: * AT91SAM9G45-EKES board
-+ * * AT91SAM9M10G45-EK board
-+ *
-+ * Copyright (C) 2009 Atmel Corporation.
-+ *
-+ * 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.
-+ *
-+ */
-+/*
-+ * Based on board-sam9m10g45ek.c
-+ * filename: board-pm9g45.c
-+ * date: 05.02.2010
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/ads7846.h>
-+#include <linux/fb.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
-+#include <linux/leds.h>
-+#include <linux/clk.h>
-+#include <linux/w1-gpio.h>
-+#include <linux/atmel-mci.h>
-+
-+#include <mach/hardware.h>
-+#include <video/atmel_lcdc.h>
-+
-+#include <asm/setup.h>
-+#include <asm/mach-types.h>
-+#include <asm/irq.h>
-+
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <asm/mach/irq.h>
-+
-+#include <mach/at91sam9g45_matrix.h>
-+
-+#include <mach/hardware.h>
-+#include <mach/board.h>
-+#include <mach/gpio.h>
-+#include <mach/at91sam9_smc.h>
-+#include <mach/at91_shdwc.h>
-+
-+#include "sam9_smc.h"
-+#include "generic.h"
-+
-+static void __init pm9g45_map_io(void)
-+{
-+ /* Initialize processor: 12.000 MHz crystal */
-+ at91sam9g45_initialize(12000000);
-+
-+ /* DGBU on ttyS0. (Rx & Tx only) */
-+ at91_register_uart(0, 0, 0);
-+
-+ /* USART0 not connected on the -EK board */
-+ /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-+ at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-+
-+ /* set serial console to ttyS0 (ie, DBGU) */
-+ at91_set_serial_console(0);
-+}
-+
-+static void __init pm9g45_init_irq(void)
-+{
-+ at91sam9g45_init_interrupts(NULL);
-+}
-+
-+
-+/*
-+ * USB HS Host port (common to OHCI & EHCI)
-+ */
-+static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
-+ .ports = 2,
-+ .vbus_pin = { 0, 0},
-+};
-+
-+
-+/*
-+ * USB HS Device port
-+ */
-+static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
-+ .vbus_pin = AT91_PIN_PD1,
-+};
-+
-+/*
-+ * ADS7846 Touchscreen
-+ */
-+#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
-+static int ads7843_pendown_state(void)
-+{
-+ return !at91_get_gpio_value(AT91_PIN_PD18); /* Touchscreen PENIRQ */
-+}
-+
-+static struct ads7846_platform_data ads_info = {
-+ .model = 7843,
-+ .x_min = 150,
-+ .x_max = 3830,
-+ .y_min = 190,
-+ .y_max = 3830,
-+ .settle_delay_usecs = 2000,
-+ .keep_vref_on = 1,
-+ .vref_delay_usecs = 500,
-+ .x_plate_ohms = 607,
-+ .y_plate_ohms = 232,
-+ .pressure_max = 15000,
-+ .debounce_max = 1,
-+ .debounce_rep = 1, //0
-+ .debounce_tol = (50), //(~0)
-+ .get_pendown_state = ads7843_pendown_state,
-+ .penirq_recheck_delay_usecs = 200,
-+};
-+
-+static void __init pm9g45_add_device_ts(void)
-+{
-+ at91_set_gpio_input(AT91_PIN_PD18, 1); /* External IRQ, with pullup */
-+ at91_set_gpio_input(AT91_PIN_PE31, 1); /* Touchscreen BUSY signal */
-+}
-+#else
-+static void __init pm9g45_add_device_ts(void) {}
-+#endif
-+static struct at91_tsadcc_data pm9g45_tsadcc_data = {
-+ .adc_clock = 300000,
-+ .pendet_debounce = 0x0d,
-+ .ts_sample_hold_time = 0x0a,
-+};
-+
-+/*
-+ * SPI devices.
-+ */
-+static struct spi_board_info pm9g45_spi_devices[] = {
-+#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
-+ { /* DataFlash card */
-+ .modalias = "mtd_dataflash",
-+ .chip_select = 0,
-+ .max_speed_hz = 15 * 1000 * 1000,
-+ .bus_num = 0,
-+ },
-+#endif
-+#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
-+ {
-+ .modalias = "ads7846",
-+ .chip_select = 0,
-+ .max_speed_hz = 125000 * 16, /* max sample rate * clocks per sample */
-+ .bus_num = 1,
-+ .platform_data = &ads_info,
-+ .irq = AT91_PIN_PD18,
-+ },
-+#endif
-+};
-+
-+/*
-+ * MCI (SD/MMC)
-+ */
-+static struct mci_platform_data __initdata pm9g45_mci0_data = {
-+ .slot[0] = {
-+ .bus_width = 4,
-+ .detect_pin = AT91_PIN_PD30,
-+ .wp_pin = AT91_PIN_PD29,
-+ // .vcc_pin = ... not connected
-+ }
-+};
-+
-+/*
-+ * MACB Ethernet device
-+ */
-+static struct at91_eth_data __initdata pm9g45_macb_data = {
-+ .phy_irq_pin = AT91_PIN_PD5,
-+ .is_rmii = 1,
-+};
-+
-+
-+/*
-+ * NAND flash
-+ */
-+static struct mtd_partition __initdata pm9g45_nand_partition[] = {
-+ {
-+ .name = "Partition 1",
-+ .offset = 0,
-+ .size = MTDPART_SIZ_FULL,
-+ },
-+
-+};
-+
-+static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-+{
-+ *num_partitions = ARRAY_SIZE(pm9g45_nand_partition);
-+ return pm9g45_nand_partition;
-+}
-+
-+/* det_pin is not connected */
-+static struct atmel_nand_data __initdata pm9g45_nand_data = {
-+ .ale = 21,
-+ .cle = 22,
-+ // .det_pin = ... not connected
-+ .rdy_pin = AT91_PIN_PD3,
-+// .rdy_pin_active_low = 0,
-+ .enable_pin = AT91_PIN_PC14,
-+ .partition_info = nand_partitions,
-+#if defined(CONFIG_MTD_NAND_AT91_BUSWIDTH_16)
-+ .bus_width_16 = 1,
-+#else
-+ .bus_width_16 = 0,
-+#endif
-+};
-+
-+static struct sam9_smc_config __initdata pm9g45_nand_smc_config = {
-+ .ncs_read_setup = 0,
-+ .nrd_setup = 1,
-+ .ncs_write_setup = 0,
-+ .nwe_setup = 1,
-+
-+ .ncs_read_pulse = 2, /* 3*/
-+ .nrd_pulse = 3, /* 3 */
-+ .ncs_write_pulse = 3, /* 3 */
-+ .nwe_pulse = 4, /* 3*/
-+
-+ .read_cycle = 4, /* 5*/
-+ .write_cycle = 7, /* 5*/
-+
-+ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
-+ .tdf_cycles = 3, /* 2*/
-+};
-+
-+static void __init pm9g45_add_device_nand(void)
-+{
-+ /* setup bus-width (8 or 16) */
-+ if (pm9g45_nand_data.bus_width_16)
-+ pm9g45_nand_smc_config.mode |= AT91_SMC_DBW_16;
-+ else
-+ pm9g45_nand_smc_config.mode |= AT91_SMC_DBW_8;
-+
-+ /* configure chip-select 3 (NAND) */
-+ sam9_smc_configure(3, &pm9g45_nand_smc_config);
-+
-+ at91_add_device_nand(&pm9g45_nand_data);
-+}
-+
-+
-+/*
-+ * LCD Controller
-+ */
-+#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
-+
-+#define AT91SAM9G45_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
-+ | ATMEL_LCDC_DISTYPE_TFT \
-+ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
-+
-+static void at91_lcdc_power_control(int on)
-+{
-+ at91_set_gpio_value(AT91_PIN_PE6, on);
-+}
-+
-+static u64 lcdc_dmamask = 0xffffffffUL;
-+static struct atmel_lcdfb_info lcdc_data;
-+
-+static struct resource lcdc_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_LCDC_BASE,
-+ .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = CONFIG_VRAM_BASE,
-+ .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = AT91SAM9G45_ID_LCDC,
-+ .end = AT91SAM9G45_ID_LCDC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91_lcdc_device = {
-+ .name = "atmel_lcdfb",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &lcdc_dmamask,
-+ .coherent_dma_mask = 0xffffffffUL,
-+ .platform_data = &lcdc_data,
-+ },
-+ .resource = lcdc_resources,
-+ .num_resources = ARRAY_SIZE(lcdc_resources),
-+};
-+
-+static void __init pm9g45_add_device_lcdc(struct atmel_lcdfb_info *data)
-+{
-+ if (!data)
-+ return;
-+
-+ at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
-+ at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
-+ at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */
-+ at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */
-+
-+ at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
-+ /* at91_set_A_periph(AT91_PIN_PE7, 0); Not used */ /* LCDD0/LCDD2 */
-+ /* at91_set_A_periph(AT91_PIN_PE8, 0); Not used */ /* LCDD1/LCDD3 */
-+ at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2_R0 */
-+ at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3_R1 */
-+ at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4_R2 */
-+ at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5_R3 */
-+ at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6_R4 */
-+ at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7_R5 */
-+ /* at91_set_A_periph(AT91_PIN_PE15, 0); Not used */ /* LCDD8/LCDD12 */
-+ /* at91_set_A_periph(AT91_PIN_PE16, 0); Not used */ /* LCDD9/LCDD13 */
-+ at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10_G0 */
-+ at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11_G1 */
-+ at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12_G2 */
-+ at91_set_A_periph(AT91_PIN_PE20, 0); /* LCDD13_G3 */
-+ at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14_G4 */
-+ at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15_G5 */
-+ /* at91_set_A_periph(AT91_PIN_PE23, 0); Not used */ /* LCDD8/LCDD12 */
-+ /* at91_set_A_periph(AT91_PIN_PE24, 0); Not used */ /* LCDD9/LCDD13 */
-+ at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18_B0 */
-+ at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19_B1 */
-+ at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20_B2 */
-+ at91_set_A_periph(AT91_PIN_PE28, 0); /* LCDD21_B3 */
-+ at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22_B4 */
-+ at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23_B5 */
-+
-+ lcdc_data = *data;
-+ platform_device_register(&at91_lcdc_device);
-+}
-+
-+#if defined(CONFIG_PM9G45_LCD_TX09D70)
-+/* Hitachi TX09D70VM1CCA - 3.5", 320x240 */
-+static struct fb_videomode at91_tft_vga_modes[] = {
-+ {
-+ .name = "TX09D50VM1CCA @ 60",
-+ .refresh = 60,
-+ .xres = 240,
-+ .yres = 320,
-+ .pixclock = KHZ2PICOS(4965),
-+ .left_margin = 1,
-+ .right_margin = 33,
-+ .upper_margin = 1,
-+ .lower_margin = 0,
-+ .hsync_len = 5,
-+ .vsync_len = 1,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs at91fb_default_monspecs = {
-+ .manufacturer = "HIT",
-+ .monitor = "TX09D70VM1CCA",
-+ .modedb = at91_tft_vga_modes,
-+ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
-+ .hfmin = 15000,
-+ .hfmax = 64000,
-+ .vfmin = 50,
-+ .vfmax = 150,
-+};
-+
-+/* Driver datas */
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .lcdcon_is_backlight = true,
-+ .default_bpp = 16,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &at91fb_default_monspecs,
-+ .atmel_lcdfb_power_control = at91_lcdc_power_control,
-+ .guard_time = 1,
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
-+};
-+
-+#elif defined(CONFIG_PM9G45_LCD_RA158)
-+/* Seiko RA158 - 4.3", 800x480, 350cd */
-+static struct fb_videomode __initdata tft_modes[] = {
-+ {
-+ .name = "800x480 @ 60",
-+ .refresh = 60,
-+ .xres = 800,
-+ .yres = 480,
-+ .pixclock = KHZ2PICOS(10000),
-+ .left_margin = 89,
-+ .right_margin = 164,
-+ .upper_margin = 23,
-+ .lower_margin = 10,
-+ .hsync_len = 10,
-+ .vsync_len = 10,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs __initdata tft_default_monspecs = {
-+ .manufacturer = "SEI",
-+ .monitor = "RA158Z",
-+ .modedb = tft_modes,
-+ .modedb_len = ARRAY_SIZE(tft_modes),
-+ .hfmin = 10000,
-+ .hfmax = 35000,
-+ .vfmin = 40,
-+ .vfmax = 90,
-+ .dclkmax = 35000000,
-+};
-+
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .default_bpp = 24,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &tft_default_monspecs,
-+ .guard_time = 2,
-+};
-+
-+
-+#elif defined(CONFIG_PM9G45_LCD_TCG057VGLAC)
-+/* Kyocera TCG057VGLAC - 5.7", 640x480 */
-+static struct fb_videomode at91_tft_vga_modes[] = {
-+ {
-+ .name = "TCG057VGLAC @ 60",
-+ .refresh = 60,
-+ .xres = 640,
-+ .yres = 480,
-+ .pixclock = KHZ2PICOS(25000),
-+ .hsync_len = 5,
-+ .left_margin = 1,
-+ .right_margin = 33,
-+ .vsync_len = 1,
-+ .upper_margin = 4,
-+ .lower_margin = 0,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs at91fb_default_monspecs = {
-+ .manufacturer = "KYO",
-+ .monitor = "TCG057VGLAC",
-+ .modedb = at91_tft_vga_modes,
-+ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
-+ .hfmin = 15000,
-+ .hfmax = 64000,
-+ .vfmin = 50,
-+ .vfmax = 150,
-+};
-+
-+/* Driver datas */
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .lcdcon_is_backlight = true,
-+ .default_bpp = 16,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &at91fb_default_monspecs,
-+ .atmel_lcdfb_power_control = at91_lcdc_power_control,
-+ .guard_time = 1,
-+};
-+
-+#elif defined(CONFIG_PM9G45_LCD_GTTV57NN771E0)
-+/* Solomon GTTV57NN771E0 - 5.7", 640x480 */
-+static struct fb_videomode at91_tft_vga_modes[] = {
-+ {
-+ .name = "GTTV57NN771E0 @ 60",
-+ .refresh = 60,
-+ .xres = 640,
-+ .yres = 480,
-+ .pixclock = KHZ2PICOS(50000),
-+ .hsync_len = 30,
-+ .left_margin = 114,
-+ .right_margin = 16,
-+ .vsync_len = 3,
-+ .upper_margin = 32,
-+ .lower_margin = 10,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs at91fb_default_monspecs = {
-+ .manufacturer = "SGD",
-+ .monitor = "GTTV57NN771E0",
-+ .modedb = at91_tft_vga_modes,
-+ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
-+ .hfmin = 10000,
-+ .hfmax = 40000,
-+ .vfmin = 40,
-+ .vfmax = 90,
-+};
-+
-+/* Driver datas */
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .lcdcon_is_backlight = true,
-+ .default_bpp = 16,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &at91fb_default_monspecs,
-+ .atmel_lcdfb_power_control = at91_lcdc_power_control,
-+ .guard_time = 1,
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
-+};
-+
-+#elif defined(CONFIG_PM9G45_LCD_GLAA057VA01CW)
-+/* CPT CLAA057VA01CW - 5.7", 640x480, 220cd */
-+static struct fb_videomode __initdata tft_modes[] = {
-+ {
-+ .name = "640x480 @ 60",
-+ .refresh = 60,
-+ .xres = 640,
-+ .yres = 480,
-+ .pixclock = KHZ2PICOS(25000),
-+ .left_margin = 45,
-+ .right_margin = 114,
-+ .upper_margin = 33,
-+ .lower_margin = 11,
-+ .hsync_len = 1,
-+ .vsync_len = 1,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs __initdata tft_default_monspecs = {
-+ .manufacturer = "CPT",
-+ .monitor = "CLAA057VA01CW",
-+ .modedb = tft_modes,
-+ .modedb_len = ARRAY_SIZE(tft_modes),
-+ .hfmin = 10000,
-+ .hfmax = 22350,
-+ .vfmin = 40,
-+ .vfmax = 90,
-+ .dclkmax = 30000000,
-+};
-+
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .default_bpp = 16,
-+ .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &tft_default_monspecs,
-+ .guard_time = 2,
-+};
-+
-+
-+#elif defined(CONFIG_PM9G45_LCD_GATW70SN8H1E0)
-+/* Solomon GATW70 - 7.0", 800x480, 350cd */
-+static struct fb_videomode __initdata tft_modes[] = {
-+ {
-+ .name = "800x480 @ 60",
-+ .refresh = 60,
-+ .xres = 800,
-+ .yres = 480,
-+ .pixclock = KHZ2PICOS(25000),
-+ .left_margin = 40,
-+ .right_margin = 40,
-+ .upper_margin = 29,
-+ .lower_margin = 13,
-+ .hsync_len = 48,
-+ .vsync_len = 3,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs __initdata tft_default_monspecs = {
-+ .manufacturer = "SGD",
-+ .monitor = "GATW70",
-+ .modedb = tft_modes,
-+ .modedb_len = ARRAY_SIZE(tft_modes),
-+ .hfmin = 10000,
-+ .hfmax = 35000,
-+ .vfmin = 40,
-+ .vfmax = 90,
-+ .dclkmax = 35000000,
-+};
-+
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .default_bpp = 24,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &tft_default_monspecs,
-+ .guard_time = 2,
-+};
-+
-+#elif defined(CONFIG_PM9G45_LCD_CLAA080MB0ACW)
-+/* CPT CLAA080 - 8.0", 800x600, 250cd */
-+static struct fb_videomode __initdata tft_modes[] = {
-+ {
-+ .name = "800x600 @ 60",
-+ .refresh = 60,
-+ .xres = 800,
-+ .yres = 600,
-+ .pixclock = KHZ2PICOS(25000),
-+ .left_margin = 0,
-+ .right_margin = 216,
-+ .upper_margin = 0,
-+ .lower_margin = 28,
-+ .hsync_len = 0,
-+ .vsync_len = 0,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs __initdata tft_default_monspecs = {
-+ .manufacturer = "CPT",
-+ .monitor = "CLAA080",
-+ .modedb = tft_modes,
-+ .modedb_len = ARRAY_SIZE(tft_modes),
-+ .hfmin = 10000,
-+ .hfmax = 40000,
-+ .vfmin = 40,
-+ .vfmax = 90,
-+ .dclkmax = 40000000,
-+};
-+
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
-+ .default_bpp = 24,
-+ .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &tft_default_monspecs,
-+ .guard_time = 2,
-+};
-+
-+#else
-+#error "Undefined LCD display!"
-+#endif
-+
-+#else
-+static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data;
-+#endif
-+
-+/*
-+ * GPIO Buttons
-+ */
-+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-+static struct gpio_keys_button pm9g45_buttons[] = {
-+ { /* SW3 */
-+ .code = KEY_UP,
-+ .gpio = AT91_PIN_PE8,
-+ .active_low = 1,
-+ .desc = "SW3",
-+ .wakeup = 1,
-+ .type = EV_KEY,
-+ },
-+ { /* SW4 */
-+ .code = KEY_RIGHT,
-+ .gpio = AT91_PIN_PE7,
-+ .active_low = 1,
-+ .desc = "SW4",
-+ .wakeup = 1,
-+ .type = EV_KEY,
-+ }
-+};
-+
-+static struct gpio_keys_platform_data pm9g45_button_data = {
-+ .buttons = pm9g45_buttons,
-+ .nbuttons = ARRAY_SIZE(pm9g45_buttons),
-+};
-+
-+static struct platform_device pm9g45_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &pm9g45_button_data,
-+ }
-+};
-+
-+static void __init pm9g45_add_device_buttons(void)
-+{
-+ int i;
-+
-+ printk("at91: pm9g45 registering GPIO buttons\n");
-+ platform_device_register(&pm9g45_button_device);
-+
-+ for (i = 0; i < pm9g45_button_data.nbuttons; i ++) {
-+ gpio_to_irq(pm9g45_buttons[i].gpio);
-+ at91_set_gpio_input(pm9g45_buttons[i].gpio, 1);
-+ at91_set_deglitch(pm9g45_buttons[i].gpio, 1);
-+ }
-+
-+}
-+#else
-+static void __init pm9g45_add_device_buttons(void) {}
-+#endif
-+
-+/*
-+ * AC97
-+ */
-+static struct ac97c_platform_data pm9g45_ac97_data = {
-+ .reset_pin = 0,
-+};
-+
-+
-+/*
-+ * LEDs ... these could all be PWM-driven, for variable brightness
-+ */
-+static struct gpio_led pm9g45_leds[] = {
-+ { /* "right" led, green, userled2 (could be driven by pwm2) */
-+ .name = "led0",
-+ .gpio = AT91_PIN_PD0,
-+ .active_low = 1,
-+ .default_trigger = "nand-disk",
-+ },
-+ { /* "power" led, yellow (could be driven by pwm0) */
-+ .name = "led1",
-+ .gpio = AT91_PIN_PD31,
-+ .active_low = 1,
-+ .default_trigger = "heartbeat",
-+ }
-+};
-+
-+#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
-+struct w1_gpio_platform_data pm9g45_w1_platdata = {
-+ .pin = AT91_PIN_PA31,
-+ .is_open_drain = 0,
-+};
-+
-+static struct platform_device pm9g45_w1_device = {
-+ .name = "w1-gpio",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &pm9g45_w1_platdata,
-+ },
-+};
-+#endif
-+
-+#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
-+ defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
-+static struct at91_cf_data pm9g45_cf_data = {
-+ .det_pin = AT91_PIN_PD13,
-+ .rst_pin = AT91_PIN_PD14,
-+ .irq_pin = AT91_PIN_PE1,
-+ // .vcc_pin = ... always powered
-+ .chipselect = 4,
-+};
-+
-+static struct resource pm9g45_cf_resources[] = {
-+ [0] = {
-+ .start = AT91_CHIPSELECT_4,
-+ .end = AT91_CHIPSELECT_4 + (0x10000000 - 1),
-+ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
-+ },
-+};
-+
-+static struct platform_device pm9g45_cf_device = {
-+ .name = "at91_cf",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &pm9g45_cf_data,
-+ },
-+ .resource = pm9g45_cf_resources,
-+ .num_resources = ARRAY_SIZE(pm9g45_cf_resources),
-+};
-+
-+#define CF_NWE_SETUP (9 << 0)
-+#define CF_NCS_WR_SETUP (2 << 8)
-+#define CF_NRD_SETUP (9 << 16)
-+#define CF_NCS_RD_SETUP (2 << 24)
-+
-+#define CF_NWE_PULSE (17 << 0)
-+#define CF_NCS_WR_PULSE (27 << 8)
-+#define CF_NRD_PULSE (17 << 16)
-+#define CF_NCS_RD_PULSE (27 << 24)
-+
-+#define CF_NWE_CYCLE (40 << 0)
-+#define CF_NRD_CYCLE (40 << 16)
-+
-+#define CF_TDF (1 << 16)
-+
-+static void __init pm9g45_add_device_cf(void) {
-+struct at91_cf_data *data = & pm9g45_cf_data;
-+unsigned int csa;
-+
-+ // Setup Compact flash, first enable the address range of
-+ // CS4 in HMATRIX user interface
-+ csa = at91_sys_read(AT91_MATRIX_EBICSA);
-+ at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS4A_SMC_CF0);
-+
-+ /* Configure SMC CS4 */
-+ at91_sys_write(AT91_SMC_SETUP(4),
-+ (CF_NWE_SETUP |
-+ CF_NCS_WR_SETUP |
-+ CF_NRD_SETUP |
-+ CF_NCS_RD_SETUP));
-+
-+ at91_sys_write(AT91_SMC_PULSE(4), (CF_NWE_PULSE |
-+ CF_NCS_WR_PULSE |
-+ CF_NRD_PULSE |
-+ CF_NCS_RD_PULSE));
-+ at91_sys_write(AT91_SMC_CYCLE(4), (CF_NWE_CYCLE | CF_NRD_CYCLE));
-+ // 16 bit
-+ at91_sys_write (AT91_SMC_MODE(4), (AT91_SMC_READMODE |
-+ AT91_SMC_WRITEMODE |
-+ AT91_SMC_EXNWMODE_DISABLE |
-+ AT91_SMC_DBW_16 |
-+ CF_TDF));
-+
-+ /* input/irq */
-+ if (data->irq_pin) {
-+ at91_set_gpio_input(data->irq_pin, 0);
-+ at91_set_deglitch(data->irq_pin, 1);
-+ }
-+ at91_set_gpio_input(data->det_pin, 0);
-+ at91_set_deglitch(data->det_pin, 1);
-+
-+ /* outputs, initially off */
-+ if (data->vcc_pin)
-+ at91_set_gpio_output(data->vcc_pin, 0);
-+ if (data->rst_pin)
-+ at91_set_gpio_output(data->rst_pin, 0);
-+
-+ /* force poweron defaults for these pins ... */
-+ at91_set_A_periph(AT91_PIN_PC15, 0); /* */
-+ at91_set_A_periph(AT91_PIN_PC12, 0); /* */
-+ at91_set_A_periph(AT91_PIN_PC10, 0); /* */
-+ at91_set_A_periph(AT91_PIN_PC8, 0); /* */
-+ at91_set_A_periph(AT91_PIN_PC9, 0); /* */
-+
-+ platform_device_register(&pm9g45_cf_device);
-+}
-+#else
-+void __init pm9g45_add_device_cf(void) {}
-+#endif
-+
-+static void __init pm9g45_board_init(void)
-+{
-+ /* Serial */
-+ at91_add_device_serial();
-+ /* USB HS Host */
-+ at91_add_device_usbh_ohci(&pm9g45_usbh_hs_data);
-+ at91_add_device_usbh_ehci(&pm9g45_usbh_hs_data);
-+ /* USB HS Device */
-+ //at91_add_device_usba(&pm9g45_usba_udc_data);
-+ /* SPI */
-+ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
-+ /* Touchscreen */
-+ pm9g45_add_device_ts();
-+ /* at91_add_device_tsadcc(&pm9g45_tsadcc_data); Not used for now */
-+ /* MMC */
-+ at91_add_device_mci(0, &pm9g45_mci0_data);
-+ /* Ethernet */
-+ at91_add_device_eth(&pm9g45_macb_data);
-+ /* NAND */
-+ pm9g45_add_device_nand();
-+ /* I2C */
-+ /* No I2C used in pm9g45 */
-+ /* LCD Controller */
-+ pm9g45_add_device_lcdc(&pm9g45_lcdc_data);
-+ /* Push Buttons */
-+ pm9g45_add_device_buttons();
-+ /* AC97 */
-+ at91_add_device_ac97(&pm9g45_ac97_data);
-+#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
-+ platform_device_register(&pm9g45_w1_device);
-+#endif
-+ /* Compact flash */
-+ pm9g45_add_device_cf();
-+ /* LEDs */
-+ at91_gpio_leds(pm9g45_leds, ARRAY_SIZE(pm9g45_leds));
-+}
-+
-+MACHINE_START(PM9G45, "Ronetix PM9G45")
-+ /* Maintainer: Atmel */
-+ .phys_io = AT91_BASE_SYS,
-+ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
-+ .boot_params = AT91_SDRAM_BASE + 0x100,
-+ .timer = &at91sam926x_timer,
-+ .map_io = pm9g45_map_io,
-+ .init_irq = pm9g45_init_irq,
-+ .init_machine = pm9g45_board_init,
-+MACHINE_END
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-pm9g45-default-configuration-files.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-pm9g45-default-configuration-files.patch
new file mode 100644
index 0000000..80b53fa
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0007-pm9g45-default-configuration-files.patch
@@ -0,0 +1,3360 @@
+From b631cd2acba827ec2852f68ca11ce95b7da19fbc Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 2 Mar 2010 01:56:44 +0200
+Subject: [[PATCH 07/22] pm9g45: default configuration files
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/configs/pm9g45_defconfig | 1674 ++++++++++++++++++++++++++++++++++
+ arch/arm/configs/pm9g45cs6_defconfig | 1657 +++++++++++++++++++++++++++++++++
+ 2 files changed, 3331 insertions(+), 0 deletions(-)
+ create mode 100644 arch/arm/configs/pm9g45_defconfig
+ create mode 100644 arch/arm/configs/pm9g45cs6_defconfig
+
+diff --git a/arch/arm/configs/pm9g45_defconfig b/arch/arm/configs/pm9g45_defconfig
+new file mode 100644
+index 0000000..a57f0f5
+--- /dev/null
++++ b/arch/arm/configs/pm9g45_defconfig
+@@ -0,0 +1,1674 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.30.10
++# Fri Feb 19 20:39:36 2010
++#
++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_NO_IOPORT is not set
++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_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++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"
++
++#
++# General setup
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=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 is not set
++CONFIG_TREE_RCU=y
++# CONFIG_PREEMPT_RCU is not set
++# CONFIG_RCU_TRACE is not set
++CONFIG_RCU_FANOUT=32
++# CONFIG_RCU_FANOUT_EXACT is not set
++# CONFIG_TREE_RCU_TRACE is not set
++# CONFIG_PREEMPT_RCU_TRACE is not set
++# CONFIG_IKCONFIG is not set
++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=y
++# CONFIG_UTS_NS is not set
++# CONFIG_IPC_NS is not set
++# CONFIG_USER_NS is not set
++# CONFIG_PID_NS is not set
++# CONFIG_NET_NS is not set
++# CONFIG_BLK_DEV_INITRD is not set
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
++CONFIG_SYSCTL=y
++CONFIG_ANON_INODES=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_STRIP_ASM_SYMS=y
++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
++CONFIG_VM_EVENT_COUNTERS=y
++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
++# 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_LBD is not set
++# 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 is not set
++# CONFIG_IOSCHED_CFQ is not set
++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 is not set
++
++#
++# 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=y
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_GEMINI is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# 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_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_LOKI is not set
++# CONFIG_ARCH_MV78XX0 is not set
++# CONFIG_ARCH_MXC is not set
++# CONFIG_ARCH_ORION5X is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_MMP 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_DAVINCI is not set
++# CONFIG_ARCH_OMAP is not set
++# CONFIG_ARCH_MSM is not set
++# CONFIG_ARCH_W90X900 is not set
++
++#
++# Atmel AT91 System-on-Chip
++#
++# CONFIG_ARCH_AT91RM9200 is not set
++# CONFIG_ARCH_AT91SAM9260 is not set
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9G10 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++# CONFIG_ARCH_AT91SAM9G20 is not set
++CONFIG_ARCH_AT91SAM9G45=y
++# CONFIG_ARCH_AT91CAP9 is not set
++# CONFIG_ARCH_AT572D940HF is not set
++# CONFIG_ARCH_AT91X40 is not set
++CONFIG_AT91_PMC_UNIT=y
++
++#
++# AT91SAM9G45 Board Type
++#
++# CONFIG_MACH_AT91SAM9G45EKES is not set
++CONFIG_MACH_PM9G45=y
++CONFIG_PM9G45_SYSTEM_RAM_CS1=y
++# CONFIG_PM9G45_SYSTEM_RAM_CS6 is not set
++CONFIG_PM9G45_LCD_TX09D70=y
++# CONFIG_PM9G45_LCD_RA158 is not set
++# CONFIG_PM9G45_LCD_TCG057VGLAC is not set
++# CONFIG_PM9G45_LCD_GTTV57NN771E0 is not set
++# CONFIG_PM9G45_LCD_GLAA057VA01CW is not set
++# CONFIG_PM9G45_LCD_GATW70SN8H1E0 is not set
++# CONFIG_PM9G45_LCD_CLAA080MB0ACW is not set
++
++#
++# AT91 Board Options
++#
++CONFIG_MTD_AT91_DATAFLASH_CARD=y
++# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
++
++#
++# AT91 Feature Selections
++#
++CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
++CONFIG_AT91_TIMER_HZ=100
++CONFIG_AT91_EARLY_DBGU=y
++# CONFIG_AT91_EARLY_USART0 is not set
++# CONFIG_AT91_EARLY_USART1 is not set
++# CONFIG_AT91_EARLY_USART2 is not set
++# CONFIG_AT91_EARLY_USART3 is not set
++# CONFIG_AT91_EARLY_USART4 is not set
++# CONFIG_AT91_EARLY_USART5 is not set
++
++#
++# 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 is not set
++
++#
++# Bus support
++#
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++CONFIG_PCCARD=y
++CONFIG_PCMCIA_DEBUG=y
++CONFIG_PCMCIA=y
++# CONFIG_PCMCIA_LOAD_CIS is not set
++# CONFIG_PCMCIA_IOCTL is not set
++
++#
++# PC-card bridges
++#
++CONFIG_AT91_CF=y
++
++#
++# 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 is not set
++CONFIG_HZ=100
++CONFIG_AEABI=y
++CONFIG_OABI_COMPAT=y
++# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
++# 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_UNEVICTABLE_LRU=y
++CONFIG_HAVE_MLOCK=y
++CONFIG_HAVE_MLOCKED_PAGE_BIT=y
++CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
++CONFIG_LEDS=y
++CONFIG_LEDS_CPU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# 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 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_NET_KEY is not set
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++# CONFIG_IP_PNP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_IP_MROUTE 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 is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++# CONFIG_INET_LRO is not set
++# CONFIG_INET_DIAG is not set
++# 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_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 is not set
++# CONFIG_AF_RXRPC is not set
++# CONFIG_WIRELESS is not set
++# 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 is not set
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# 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_DATAFLASH=y
++CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
++# CONFIG_MTD_DATAFLASH_OTP is not set
++# CONFIG_MTD_M25P80 is not set
++# 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 is not set
++# 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_ATMEL=y
++CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
++# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
++# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
++# CONFIG_MTD_NAND_NANDSIM is not set
++# CONFIG_MTD_NAND_PLATFORM is not set
++# CONFIG_MTD_ALAUDA is not set
++# CONFIG_MTD_ONENAND is not set
++
++#
++# LPDDR flash memory drivers
++#
++# CONFIG_MTD_LPDDR is not set
++
++#
++# UBI - Unsorted block images
++#
++CONFIG_MTD_UBI=y
++CONFIG_MTD_UBI_WL_THRESHOLD=4096
++CONFIG_MTD_UBI_BEB_RESERVE=1
++# CONFIG_MTD_UBI_GLUEBI is not set
++
++#
++# UBI debugging options
++#
++# CONFIG_MTD_UBI_DEBUG 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 is not set
++# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=4
++CONFIG_BLK_DEV_RAM_SIZE=8192
++# CONFIG_BLK_DEV_XIP is not set
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++CONFIG_MISC_DEVICES=y
++# CONFIG_ATMEL_PWM is not set
++CONFIG_ATMEL_TCLIB=y
++CONFIG_ATMEL_TCB_CLKSRC=y
++CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
++CONFIG_ATMEL_SSC=y
++# CONFIG_ENCLOSURE_SERVICES is not set
++# CONFIG_C2PORT is not set
++
++#
++# EEPROM support
++#
++# CONFIG_EEPROM_AT25 is not set
++# CONFIG_EEPROM_93CX6 is not set
++CONFIG_HAVE_IDE=y
++CONFIG_IDE=y
++
++#
++# Please see Documentation/ide/ide.txt for help/info on IDE drives
++#
++CONFIG_IDE_XFER_MODE=y
++CONFIG_IDE_TIMINGS=y
++# CONFIG_BLK_DEV_IDE_SATA is not set
++CONFIG_IDE_GD=y
++CONFIG_IDE_GD_ATA=y
++# CONFIG_IDE_GD_ATAPI is not set
++CONFIG_BLK_DEV_IDECS=y
++# CONFIG_BLK_DEV_IDECD is not set
++# CONFIG_BLK_DEV_IDETAPE is not set
++# CONFIG_IDE_TASK_IOCTL is not set
++CONFIG_IDE_PROC_FS=y
++
++#
++# IDE chipset support/bugfixes
++#
++# CONFIG_BLK_DEV_PLATFORM is not set
++CONFIG_BLK_DEV_IDE_AT91=y
++# CONFIG_BLK_DEV_IDEDMA 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 is not set
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++CONFIG_SCSI_MULTI_LUN=y
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++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 is not set
++# CONFIG_SCSI_LOWLEVEL_PCMCIA 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_COMPAT_NET_DEV_OPS=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_MACVLAN is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++# CONFIG_VETH is not set
++CONFIG_PHYLIB=y
++
++#
++# MII PHY device drivers
++#
++# CONFIG_MARVELL_PHY is not set
++# CONFIG_DAVICOM_PHY is not set
++# CONFIG_QSEMI_PHY is not set
++# CONFIG_LXT_PHY is not set
++# CONFIG_CICADA_PHY is not set
++# CONFIG_VITESSE_PHY is not set
++# CONFIG_SMSC_PHY is not set
++# CONFIG_BROADCOM_PHY is not set
++# CONFIG_ICPLUS_PHY is not set
++# CONFIG_REALTEK_PHY is not set
++CONFIG_NATIONAL_PHY=y
++# CONFIG_STE10XP is not set
++# CONFIG_LSI_ET1011C_PHY is not set
++# CONFIG_FIXED_PHY is not set
++# CONFIG_MDIO_BITBANG is not set
++CONFIG_NET_ETHERNET=y
++# CONFIG_MII is not set
++CONFIG_MACB=y
++# CONFIG_AX88796 is not set
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++# CONFIG_ENC28J60 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_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 is not set
++
++#
++# Wireless LAN
++#
++# CONFIG_WLAN_PRE80211 is not set
++# CONFIG_WLAN_80211 is not set
++
++#
++# Enable WiMAX (Networking options) to see the WiMAX drivers
++#
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_NET_PCMCIA is not set
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++# 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=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
++CONFIG_INPUT_JOYDEV=y
++CONFIG_INPUT_EVDEV=y
++CONFIG_INPUT_EVBUG=y
++
++#
++# Input Device Drivers
++#
++CONFIG_INPUT_KEYBOARD=y
++CONFIG_KEYBOARD_ATKBD=y
++# 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=y
++CONFIG_MOUSE_PS2_ALPS=y
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
++CONFIG_MOUSE_PS2_SYNAPTICS=y
++CONFIG_MOUSE_PS2_TRACKPOINT=y
++# CONFIG_MOUSE_PS2_ELANTECH is not set
++# CONFIG_MOUSE_PS2_TOUCHKIT 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_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TABLET is not set
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ADS7846=y
++# CONFIG_TOUCHSCREEN_AD7877 is not set
++# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
++# CONFIG_TOUCHSCREEN_AD7879 is not set
++# CONFIG_TOUCHSCREEN_FUJITSU is not set
++# CONFIG_TOUCHSCREEN_GUNZE is not set
++# CONFIG_TOUCHSCREEN_ELO is not set
++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
++# CONFIG_TOUCHSCREEN_MTOUCH is not set
++# CONFIG_TOUCHSCREEN_INEXIO is not set
++# CONFIG_TOUCHSCREEN_MK712 is not set
++# CONFIG_TOUCHSCREEN_PENMOUNT is not set
++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
++# CONFIG_TOUCHSCREEN_ATMEL_TSADCC is not set
++# CONFIG_TOUCHSCREEN_WM97XX is not set
++# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
++# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++# CONFIG_SERIO_SERPORT is not set
++CONFIG_SERIO_LIBPS2=y
++# CONFIG_SERIO_RAW 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_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++CONFIG_SERIAL_ATMEL_PDC=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++# CONFIG_SERIAL_MAX3100 is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=4
++# CONFIG_IPMI_HANDLER is not set
++CONFIG_HW_RANDOM=y
++# CONFIG_HW_RANDOM_TIMERIOMEM is not set
++# CONFIG_R3964 is not set
++
++#
++# PCMCIA character devices
++#
++# CONFIG_SYNCLINK_CS is not set
++# CONFIG_CARDMAN_4000 is not set
++# CONFIG_CARDMAN_4040 is not set
++# CONFIG_IPWIRELESS is not set
++# CONFIG_RAW_DRIVER is not set
++# CONFIG_TCG_TPM is not set
++# CONFIG_I2C is not set
++CONFIG_SPI=y
++CONFIG_SPI_DEBUG=y
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=y
++# CONFIG_SPI_BITBANG is not set
++# CONFIG_SPI_GPIO is not set
++
++#
++# SPI Protocol Masters
++#
++CONFIG_SPI_SPIDEV=y
++# CONFIG_SPI_TLE62X0 is not set
++CONFIG_ARCH_REQUIRE_GPIOLIB=y
++CONFIG_GPIOLIB=y
++# CONFIG_DEBUG_GPIO is not set
++# CONFIG_GPIO_SYSFS is not set
++
++#
++# Memory mapped GPIO expanders:
++#
++
++#
++# I2C GPIO expanders:
++#
++
++#
++# PCI GPIO expanders:
++#
++
++#
++# SPI GPIO expanders:
++#
++# CONFIG_GPIO_MAX7301 is not set
++# CONFIG_GPIO_MCP23S08 is not set
++CONFIG_W1=y
++
++#
++# 1-wire Bus Masters
++#
++# CONFIG_W1_MASTER_DS2490 is not set
++# CONFIG_W1_MASTER_DS1WM is not set
++CONFIG_W1_MASTER_GPIO=y
++
++#
++# 1-wire Slaves
++#
++# CONFIG_W1_SLAVE_THERM is not set
++# CONFIG_W1_SLAVE_SMEM is not set
++# CONFIG_W1_SLAVE_DS2431 is not set
++# CONFIG_W1_SLAVE_DS2433 is not set
++# CONFIG_W1_SLAVE_DS2760 is not set
++# CONFIG_W1_SLAVE_BQ27000 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_UCB1400_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
++
++#
++# Multimedia devices
++#
++
++#
++# Multimedia core support
++#
++# CONFIG_VIDEO_DEV is not set
++# CONFIG_DVB_CORE is not set
++# CONFIG_VIDEO_MEDIA is not set
++
++#
++# Multimedia drivers
++#
++# CONFIG_DAB is not set
++
++#
++# Graphics support
++#
++# CONFIG_VGASTATE is not set
++CONFIG_VIDEO_OUTPUT_CONTROL=y
++CONFIG_FB=y
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB_DDC is not set
++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
++# CONFIG_FB_SYS_FILLRECT is not set
++# CONFIG_FB_SYS_COPYAREA is not set
++# CONFIG_FB_SYS_IMAGEBLIT is not set
++# CONFIG_FB_FOREIGN_ENDIAN is not set
++# CONFIG_FB_SYS_FOPS is not set
++# CONFIG_FB_SVGALIB is not set
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_BACKLIGHT is not set
++# CONFIG_FB_MODE_HELPERS is not set
++# CONFIG_FB_TILEBLITTING is not set
++
++#
++# Frame buffer hardware drivers
++#
++# CONFIG_FB_S1D15605 is not set
++# CONFIG_FB_S1D13XXX is not set
++CONFIG_FB_ATMEL=y
++# CONFIG_FB_VIRTUAL is not set
++# CONFIG_FB_METRONOME is not set
++# CONFIG_FB_MB862XX is not set
++# CONFIG_FB_BROADSHEET is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_LCD_CLASS_DEVICE=y
++# CONFIG_LCD_LTV350QV is not set
++# CONFIG_LCD_ILI9320 is not set
++# CONFIG_LCD_TDO24M is not set
++# CONFIG_LCD_VGG2432A4 is not set
++CONFIG_LCD_PLATFORM=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++CONFIG_BACKLIGHT_ATMEL_LCDC=y
++# CONFIG_BACKLIGHT_GENERIC is not set
++
++#
++# Display device support
++#
++CONFIG_DISPLAY_SUPPORT=y
++
++#
++# Display hardware drivers
++#
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
++CONFIG_FONTS=y
++CONFIG_FONT_8x8=y
++CONFIG_FONT_8x16=y
++# CONFIG_FONT_6x11 is not set
++# CONFIG_FONT_7x14 is not set
++# CONFIG_FONT_PEARL_8x8 is not set
++# CONFIG_FONT_ACORN_8x8 is not set
++# CONFIG_FONT_MINI_4x6 is not set
++# CONFIG_FONT_SUN8x16 is not set
++# CONFIG_FONT_SUN12x22 is not set
++# CONFIG_FONT_10x18 is not set
++CONFIG_LOGO=y
++# CONFIG_LOGO_LINUX_MONO is not set
++# CONFIG_LOGO_LINUX_VGA16 is not set
++CONFIG_LOGO_LINUX_CLUT224=y
++CONFIG_SOUND=y
++# CONFIG_SOUND_OSS_CORE is not set
++CONFIG_SND=y
++CONFIG_SND_TIMER=y
++CONFIG_SND_PCM=y
++# CONFIG_SND_SEQUENCER is not set
++# CONFIG_SND_MIXER_OSS is not set
++# CONFIG_SND_PCM_OSS is not set
++# CONFIG_SND_DYNAMIC_MINORS is not set
++CONFIG_SND_SUPPORT_OLD_API=y
++CONFIG_SND_VERBOSE_PROCFS=y
++# CONFIG_SND_VERBOSE_PRINTK is not set
++# CONFIG_SND_DEBUG is not set
++CONFIG_SND_VMASTER=y
++CONFIG_SND_AC97_CODEC=y
++# CONFIG_SND_DRIVERS is not set
++# CONFIG_SND_ARM is not set
++
++#
++# Atmel devices (AVR32 and AT91)
++#
++CONFIG_SND_ATMEL_AC97C=y
++# CONFIG_SND_SPI is not set
++# CONFIG_SND_USB is not set
++# CONFIG_SND_PCMCIA is not set
++# CONFIG_SND_SOC is not set
++# CONFIG_SOUND_PRIME is not set
++CONFIG_AC97_BUS=y
++CONFIG_HID_SUPPORT=y
++CONFIG_HID=y
++CONFIG_HID_DEBUG=y
++# CONFIG_HIDRAW is not set
++
++#
++# USB Input Devices
++#
++CONFIG_USB_HID=y
++# CONFIG_HID_PID is not set
++# CONFIG_USB_HIDDEV is not set
++
++#
++# Special HID drivers
++#
++CONFIG_HID_A4TECH=y
++CONFIG_HID_APPLE=y
++CONFIG_HID_BELKIN=y
++CONFIG_HID_CHERRY=y
++CONFIG_HID_CHICONY=y
++CONFIG_HID_CYPRESS=y
++# CONFIG_DRAGONRISE_FF is not set
++CONFIG_HID_EZKEY=y
++CONFIG_HID_KYE=y
++CONFIG_HID_GYRATION=y
++CONFIG_HID_KENSINGTON=y
++CONFIG_HID_LOGITECH=y
++# CONFIG_LOGITECH_FF is not set
++# CONFIG_LOGIRUMBLEPAD2_FF is not set
++CONFIG_HID_MICROSOFT=y
++CONFIG_HID_MONTEREY=y
++CONFIG_HID_NTRIG=y
++CONFIG_HID_PANTHERLORD=y
++# CONFIG_PANTHERLORD_FF is not set
++CONFIG_HID_PETALYNX=y
++CONFIG_HID_SAMSUNG=y
++CONFIG_HID_SONY=y
++CONFIG_HID_SUNPLUS=y
++# CONFIG_GREENASIA_FF is not set
++CONFIG_HID_TOPSEED=y
++# CONFIG_THRUSTMASTER_FF is not set
++# CONFIG_ZEROPLUS_FF is not set
++CONFIG_USB_SUPPORT=y
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++CONFIG_USB_ARCH_HAS_EHCI=y
++CONFIG_USB=y
++# CONFIG_USB_DEBUG is not set
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DEVICE_CLASS is not set
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_OTG is not set
++# CONFIG_USB_MON is not set
++# CONFIG_USB_WUSB is not set
++# CONFIG_USB_WUSB_CBAF is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_C67X00_HCD is not set
++CONFIG_USB_EHCI_HCD=y
++# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
++# CONFIG_USB_EHCI_TT_NEWSCHED is not set
++# CONFIG_USB_OXU210HP_HCD is not set
++# CONFIG_USB_ISP116X_HCD is not set
++# CONFIG_USB_ISP1760_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_HCD is not set
++# CONFIG_USB_HWA_HCD is not set
++# CONFIG_USB_MUSB_HDRC is not set
++# CONFIG_USB_GADGET_MUSB_HDRC is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_ACM is not set
++# CONFIG_USB_PRINTER is not set
++# CONFIG_USB_WDM is not set
++# CONFIG_USB_TMC is not set
++
++#
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
++#
++
++#
++# also be needed; see USB_STORAGE Help for more info
++#
++CONFIG_USB_STORAGE=y
++# CONFIG_USB_STORAGE_DEBUG is not set
++# CONFIG_USB_STORAGE_DATAFAB is not set
++# CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_ISD200 is not set
++# CONFIG_USB_STORAGE_USBAT is not set
++# CONFIG_USB_STORAGE_SDDR09 is not set
++# CONFIG_USB_STORAGE_SDDR55 is not set
++# CONFIG_USB_STORAGE_JUMPSHOT is not set
++# CONFIG_USB_STORAGE_ALAUDA is not set
++# CONFIG_USB_STORAGE_ONETOUCH is not set
++# CONFIG_USB_STORAGE_KARMA is not set
++# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
++# CONFIG_USB_LIBUSUAL is not set
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++
++#
++# USB port drivers
++#
++# CONFIG_USB_SERIAL is not set
++
++#
++# USB Miscellaneous drivers
++#
++# CONFIG_USB_EMI62 is not set
++# CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_SEVSEG is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
++# CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
++# CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_SISUSBVGA is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
++# CONFIG_USB_ISIGHTFW is not set
++# CONFIG_USB_VST is not set
++CONFIG_USB_GADGET=y
++# CONFIG_USB_GADGET_DEBUG is not set
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++# CONFIG_USB_GADGET_DEBUG_FS is not set
++CONFIG_USB_GADGET_VBUS_DRAW=2
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_AT91 is not set
++CONFIG_USB_GADGET_ATMEL_USBA=y
++CONFIG_USB_ATMEL_USBA=y
++# CONFIG_USB_GADGET_FSL_USB2 is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_PXA25X is not set
++# CONFIG_USB_GADGET_PXA27X is not set
++# CONFIG_USB_GADGET_S3C2410 is not set
++# CONFIG_USB_GADGET_IMX is not set
++# CONFIG_USB_GADGET_M66592 is not set
++# CONFIG_USB_GADGET_AMD5536UDC is not set
++# CONFIG_USB_GADGET_FSL_QE is not set
++# CONFIG_USB_GADGET_CI13XXX is not set
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++CONFIG_USB_GADGET_DUALSPEED=y
++# CONFIG_USB_ZERO is not set
++# CONFIG_USB_ETH is not set
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++CONFIG_USB_G_SERIAL=y
++# CONFIG_USB_MIDI_GADGET is not set
++# CONFIG_USB_G_PRINTER is not set
++# CONFIG_USB_CDC_COMPOSITE is not set
++
++#
++# OTG and related infrastructure
++#
++# CONFIG_USB_GPIO_VBUS is not set
++# CONFIG_NOP_USB_XCEIV is not set
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++# CONFIG_MMC_UNSAFE_RESUME is not set
++
++#
++# MMC/SD/SDIO Card Drivers
++#
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_BLOCK_BOUNCE=y
++# CONFIG_SDIO_UART is not set
++# CONFIG_MMC_TEST is not set
++
++#
++# MMC/SD/SDIO Host Controller Drivers
++#
++# CONFIG_MMC_SDHCI is not set
++# CONFIG_MMC_AT91 is not set
++CONFIG_MMC_ATMELMCI=y
++CONFIG_MMC_ATMELMCI_DMA=y
++# CONFIG_MMC_SPI is not set
++# CONFIG_MEMSTICK is not set
++# CONFIG_ACCESSIBILITY is not set
++CONFIG_NEW_LEDS=y
++CONFIG_LEDS_CLASS=y
++
++#
++# LED drivers
++#
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_GPIO_PLATFORM=y
++# CONFIG_LEDS_DAC124S085 is not set
++
++#
++# LED Triggers
++#
++CONFIG_LEDS_TRIGGERS=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
++CONFIG_LEDS_TRIGGER_GPIO=y
++# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
++
++#
++# iptables trigger is under Netfilter config (LED target)
++#
++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
++
++#
++# SPI RTC drivers
++#
++# CONFIG_RTC_DRV_M41T94 is not set
++# CONFIG_RTC_DRV_DS1305 is not set
++# CONFIG_RTC_DRV_DS1390 is not set
++# CONFIG_RTC_DRV_MAX6902 is not set
++# CONFIG_RTC_DRV_R9701 is not set
++# CONFIG_RTC_DRV_RS5C348 is not set
++# CONFIG_RTC_DRV_DS3234 is not set
++
++#
++# 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_AT91SAM9=y
++CONFIG_RTC_DRV_AT91SAM9_RTT=0
++CONFIG_RTC_DRV_AT91SAM9_GPBR=0
++CONFIG_DMADEVICES=y
++
++#
++# DMA Devices
++#
++CONFIG_AT_HDMAC=y
++CONFIG_DMA_ENGINE=y
++
++#
++# DMA Clients
++#
++# CONFIG_NET_DMA is not set
++# CONFIG_ASYNC_TX_DMA is not set
++# CONFIG_DMATEST 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 is not set
++# CONFIG_EXT3_FS is not set
++# CONFIG_EXT4_FS is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_BTRFS_FS is not set
++CONFIG_FILE_LOCKING=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 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 is not set
++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=y
++# CONFIG_JFFS2_FS_XATTR is not set
++CONFIG_JFFS2_COMPRESSION_OPTIONS=y
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_LZO=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++# CONFIG_JFFS2_CMODE_NONE is not set
++CONFIG_JFFS2_CMODE_PRIORITY=y
++# CONFIG_JFFS2_CMODE_SIZE is not set
++# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
++# CONFIG_UBIFS_FS 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 is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFSD is not set
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=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 is not set
++# CONFIG_CIFS 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=y
++# 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 is not set
++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 is not set
++# 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=y
++CONFIG_ENABLE_WARN_DEPRECATED=y
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_FRAME_WARN=1024
++# CONFIG_MAGIC_SYSRQ is not set
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_FS=y
++# 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=y
++# CONFIG_SCHEDSTATS is not set
++CONFIG_TIMER_STATS=y
++# CONFIG_DEBUG_OBJECTS is not set
++# CONFIG_DEBUG_SLAB 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=y
++CONFIG_DEBUG_INFO=y
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_WRITECOUNT is not set
++CONFIG_DEBUG_MEMORY_INIT=y
++# 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
++
++#
++# Tracers
++#
++# CONFIG_FUNCTION_TRACER is not set
++# CONFIG_IRQSOFF_TRACER is not set
++# CONFIG_SCHED_TRACER is not set
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
++# CONFIG_EVENT_TRACER is not set
++# CONFIG_BOOT_TRACER is not set
++# CONFIG_TRACE_BRANCH_PROFILING 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_DYNAMIC_DEBUG 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=y
++# 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_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 is not set
++# CONFIG_CRYPTO_CTR is not set
++# CONFIG_CRYPTO_CTS is not set
++CONFIG_CRYPTO_ECB=y
++# 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 is not set
++# 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 is not set
++# 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=y
++# CONFIG_CRYPTO_ANUBIS is not set
++CONFIG_CRYPTO_ARC4=y
++# 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 is not set
++# 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=y
++CONFIG_CRYPTO_ZLIB=y
++CONFIG_CRYPTO_LZO=y
++
++#
++# Random Number Generation
++#
++# CONFIG_CRYPTO_ANSI_CPRNG is not set
++# CONFIG_CRYPTO_HW is not set
++# CONFIG_BINARY_PRINTF is not set
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++CONFIG_GENERIC_FIND_LAST_BIT=y
++# CONFIG_CRC_CCITT is not set
++CONFIG_CRC16=y
++# 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_LZO_COMPRESS=y
++CONFIG_LZO_DECOMPRESS=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
++CONFIG_HAS_DMA=y
++CONFIG_NLATTR=y
+diff --git a/arch/arm/configs/pm9g45cs6_defconfig b/arch/arm/configs/pm9g45cs6_defconfig
+new file mode 100644
+index 0000000..724bd99
+--- /dev/null
++++ b/arch/arm/configs/pm9g45cs6_defconfig
+@@ -0,0 +1,1657 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.30.10
++# Sun Feb 28 13:56:37 2010
++#
++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_NO_IOPORT is not set
++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_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++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"
++
++#
++# General setup
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=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 is not set
++CONFIG_TREE_RCU=y
++# CONFIG_PREEMPT_RCU is not set
++# CONFIG_RCU_TRACE is not set
++CONFIG_RCU_FANOUT=32
++# CONFIG_RCU_FANOUT_EXACT is not set
++# CONFIG_TREE_RCU_TRACE is not set
++# CONFIG_PREEMPT_RCU_TRACE is not set
++# CONFIG_IKCONFIG is not set
++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=y
++# CONFIG_UTS_NS is not set
++# CONFIG_IPC_NS is not set
++# CONFIG_USER_NS is not set
++# CONFIG_PID_NS is not set
++# CONFIG_NET_NS is not set
++# CONFIG_BLK_DEV_INITRD is not set
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
++CONFIG_SYSCTL=y
++CONFIG_ANON_INODES=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_STRIP_ASM_SYMS=y
++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
++CONFIG_VM_EVENT_COUNTERS=y
++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
++# 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_LBD is not set
++# 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 is not set
++# CONFIG_IOSCHED_CFQ is not set
++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 is not set
++
++#
++# 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=y
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_GEMINI is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# 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_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_LOKI is not set
++# CONFIG_ARCH_MV78XX0 is not set
++# CONFIG_ARCH_MXC is not set
++# CONFIG_ARCH_ORION5X is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_MMP 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_DAVINCI is not set
++# CONFIG_ARCH_OMAP is not set
++# CONFIG_ARCH_MSM is not set
++# CONFIG_ARCH_W90X900 is not set
++
++#
++# Atmel AT91 System-on-Chip
++#
++# CONFIG_ARCH_AT91RM9200 is not set
++# CONFIG_ARCH_AT91SAM9260 is not set
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9G10 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++# CONFIG_ARCH_AT91SAM9G20 is not set
++CONFIG_ARCH_AT91SAM9G45=y
++# CONFIG_ARCH_AT91CAP9 is not set
++# CONFIG_ARCH_AT572D940HF is not set
++# CONFIG_ARCH_AT91X40 is not set
++CONFIG_AT91_PMC_UNIT=y
++
++#
++# AT91SAM9G45 Board Type
++#
++# CONFIG_MACH_AT91SAM9G45EKES is not set
++CONFIG_MACH_PM9G45=y
++# CONFIG_PM9G45_SYSTEM_RAM_CS1 is not set
++CONFIG_PM9G45_SYSTEM_RAM_CS6=y
++CONFIG_VRAM_SIZE=0x8000000
++CONFIG_PM9G45_LCD_TX09D70=y
++# CONFIG_PM9G45_LCD_RA158 is not set
++# CONFIG_PM9G45_LCD_TCG057VGLAC is not set
++# CONFIG_PM9G45_LCD_GTTV57NN771E0 is not set
++# CONFIG_PM9G45_LCD_GLAA057VA01CW is not set
++# CONFIG_PM9G45_LCD_GATW70SN8H1E0 is not set
++# CONFIG_PM9G45_LCD_CLAA080MB0ACW is not set
++
++#
++# AT91 Board Options
++#
++CONFIG_MTD_AT91_DATAFLASH_CARD=y
++# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
++
++#
++# AT91 Feature Selections
++#
++CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
++CONFIG_AT91_TIMER_HZ=100
++CONFIG_AT91_EARLY_DBGU=y
++# CONFIG_AT91_EARLY_USART0 is not set
++# CONFIG_AT91_EARLY_USART1 is not set
++# CONFIG_AT91_EARLY_USART2 is not set
++# CONFIG_AT91_EARLY_USART3 is not set
++# CONFIG_AT91_EARLY_USART4 is not set
++# CONFIG_AT91_EARLY_USART5 is not set
++
++#
++# 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 is not set
++
++#
++# Bus support
++#
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++CONFIG_PCCARD=y
++CONFIG_PCMCIA_DEBUG=y
++CONFIG_PCMCIA=y
++# CONFIG_PCMCIA_LOAD_CIS is not set
++# CONFIG_PCMCIA_IOCTL is not set
++
++#
++# PC-card bridges
++#
++CONFIG_AT91_CF=y
++
++#
++# 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 is not set
++CONFIG_HZ=100
++CONFIG_AEABI=y
++CONFIG_OABI_COMPAT=y
++# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
++# 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_UNEVICTABLE_LRU=y
++CONFIG_HAVE_MLOCK=y
++CONFIG_HAVE_MLOCKED_PAGE_BIT=y
++CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
++CONFIG_LEDS=y
++CONFIG_LEDS_CPU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE="mem=64M fbcon=rotate:3 root=/dev/mtdblock4 rw mtdparts=atmel_nand:128k(bootstrap)ro,256k(uboot)ro,1664k(env),2M(linux),-(root) rootfstype=jffs2"
++# 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 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_NET_KEY is not set
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++# CONFIG_IP_PNP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_IP_MROUTE 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 is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++# CONFIG_INET_LRO is not set
++# CONFIG_INET_DIAG is not set
++# 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_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 is not set
++# CONFIG_AF_RXRPC is not set
++# CONFIG_WIRELESS is not set
++# 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 is not set
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# 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_DATAFLASH=y
++CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
++# CONFIG_MTD_DATAFLASH_OTP is not set
++# CONFIG_MTD_M25P80 is not set
++# 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 is not set
++# 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_ATMEL=y
++CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
++# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
++# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
++# CONFIG_MTD_NAND_NANDSIM is not set
++# CONFIG_MTD_NAND_PLATFORM is not set
++# CONFIG_MTD_ALAUDA is not set
++# CONFIG_MTD_ONENAND is not set
++
++#
++# LPDDR flash memory drivers
++#
++# CONFIG_MTD_LPDDR is not set
++
++#
++# UBI - Unsorted block images
++#
++CONFIG_MTD_UBI=y
++CONFIG_MTD_UBI_WL_THRESHOLD=4096
++CONFIG_MTD_UBI_BEB_RESERVE=1
++# CONFIG_MTD_UBI_GLUEBI is not set
++
++#
++# UBI debugging options
++#
++# CONFIG_MTD_UBI_DEBUG 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 is not set
++# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
++# CONFIG_BLK_DEV_RAM is not set
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++CONFIG_MISC_DEVICES=y
++# CONFIG_ATMEL_PWM is not set
++CONFIG_ATMEL_TCLIB=y
++CONFIG_ATMEL_TCB_CLKSRC=y
++CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
++CONFIG_ATMEL_SSC=y
++# CONFIG_ENCLOSURE_SERVICES is not set
++# CONFIG_C2PORT is not set
++
++#
++# EEPROM support
++#
++# CONFIG_EEPROM_AT25 is not set
++# CONFIG_EEPROM_93CX6 is not set
++CONFIG_HAVE_IDE=y
++CONFIG_IDE=y
++
++#
++# Please see Documentation/ide/ide.txt for help/info on IDE drives
++#
++CONFIG_IDE_XFER_MODE=y
++CONFIG_IDE_TIMINGS=y
++# CONFIG_BLK_DEV_IDE_SATA is not set
++CONFIG_IDE_GD=y
++CONFIG_IDE_GD_ATA=y
++# CONFIG_IDE_GD_ATAPI is not set
++CONFIG_BLK_DEV_IDECS=y
++# CONFIG_BLK_DEV_IDECD is not set
++# CONFIG_BLK_DEV_IDETAPE is not set
++# CONFIG_IDE_TASK_IOCTL is not set
++CONFIG_IDE_PROC_FS=y
++
++#
++# IDE chipset support/bugfixes
++#
++# CONFIG_BLK_DEV_PLATFORM is not set
++CONFIG_BLK_DEV_IDE_AT91=y
++# CONFIG_BLK_DEV_IDEDMA 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 is not set
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++CONFIG_SCSI_MULTI_LUN=y
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++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 is not set
++# CONFIG_SCSI_LOWLEVEL_PCMCIA 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_COMPAT_NET_DEV_OPS=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_MACVLAN is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++# CONFIG_VETH is not set
++CONFIG_PHYLIB=y
++
++#
++# MII PHY device drivers
++#
++# CONFIG_MARVELL_PHY is not set
++# CONFIG_DAVICOM_PHY is not set
++# CONFIG_QSEMI_PHY is not set
++# CONFIG_LXT_PHY is not set
++# CONFIG_CICADA_PHY is not set
++# CONFIG_VITESSE_PHY is not set
++# CONFIG_SMSC_PHY is not set
++# CONFIG_BROADCOM_PHY is not set
++# CONFIG_ICPLUS_PHY is not set
++# CONFIG_REALTEK_PHY is not set
++CONFIG_NATIONAL_PHY=y
++# CONFIG_STE10XP is not set
++# CONFIG_LSI_ET1011C_PHY is not set
++# CONFIG_FIXED_PHY is not set
++# CONFIG_MDIO_BITBANG is not set
++CONFIG_NET_ETHERNET=y
++# CONFIG_MII is not set
++CONFIG_MACB=y
++# CONFIG_AX88796 is not set
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++# CONFIG_ENC28J60 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_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 is not set
++
++#
++# Wireless LAN
++#
++# CONFIG_WLAN_PRE80211 is not set
++# CONFIG_WLAN_80211 is not set
++
++#
++# Enable WiMAX (Networking options) to see the WiMAX drivers
++#
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_NET_PCMCIA is not set
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++# 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=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
++CONFIG_INPUT_JOYDEV=y
++CONFIG_INPUT_EVDEV=y
++CONFIG_INPUT_EVBUG=y
++
++#
++# Input Device Drivers
++#
++CONFIG_INPUT_KEYBOARD=y
++CONFIG_KEYBOARD_ATKBD=y
++# 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=y
++CONFIG_MOUSE_PS2_ALPS=y
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
++CONFIG_MOUSE_PS2_SYNAPTICS=y
++CONFIG_MOUSE_PS2_TRACKPOINT=y
++# CONFIG_MOUSE_PS2_ELANTECH is not set
++# CONFIG_MOUSE_PS2_TOUCHKIT 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_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TABLET is not set
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ADS7846=y
++# CONFIG_TOUCHSCREEN_AD7877 is not set
++# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
++# CONFIG_TOUCHSCREEN_AD7879 is not set
++# CONFIG_TOUCHSCREEN_FUJITSU is not set
++# CONFIG_TOUCHSCREEN_GUNZE is not set
++# CONFIG_TOUCHSCREEN_ELO is not set
++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
++# CONFIG_TOUCHSCREEN_MTOUCH is not set
++# CONFIG_TOUCHSCREEN_INEXIO is not set
++# CONFIG_TOUCHSCREEN_MK712 is not set
++# CONFIG_TOUCHSCREEN_PENMOUNT is not set
++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
++# CONFIG_TOUCHSCREEN_ATMEL_TSADCC is not set
++# CONFIG_TOUCHSCREEN_WM97XX is not set
++# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
++# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++# CONFIG_SERIO_SERPORT is not set
++CONFIG_SERIO_LIBPS2=y
++# CONFIG_SERIO_RAW 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_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++CONFIG_SERIAL_ATMEL_PDC=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++# CONFIG_SERIAL_MAX3100 is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=4
++# CONFIG_IPMI_HANDLER is not set
++CONFIG_HW_RANDOM=y
++# CONFIG_HW_RANDOM_TIMERIOMEM is not set
++# CONFIG_R3964 is not set
++
++#
++# PCMCIA character devices
++#
++# CONFIG_SYNCLINK_CS is not set
++# CONFIG_CARDMAN_4000 is not set
++# CONFIG_CARDMAN_4040 is not set
++# CONFIG_IPWIRELESS is not set
++# CONFIG_RAW_DRIVER is not set
++# CONFIG_TCG_TPM is not set
++# CONFIG_I2C is not set
++CONFIG_SPI=y
++CONFIG_SPI_DEBUG=y
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=y
++# CONFIG_SPI_BITBANG is not set
++# CONFIG_SPI_GPIO is not set
++
++#
++# SPI Protocol Masters
++#
++CONFIG_SPI_SPIDEV=y
++# CONFIG_SPI_TLE62X0 is not set
++CONFIG_ARCH_REQUIRE_GPIOLIB=y
++CONFIG_GPIOLIB=y
++# CONFIG_DEBUG_GPIO is not set
++# CONFIG_GPIO_SYSFS is not set
++
++#
++# Memory mapped GPIO expanders:
++#
++
++#
++# I2C GPIO expanders:
++#
++
++#
++# PCI GPIO expanders:
++#
++
++#
++# SPI GPIO expanders:
++#
++# CONFIG_GPIO_MAX7301 is not set
++# CONFIG_GPIO_MCP23S08 is not set
++CONFIG_W1=y
++
++#
++# 1-wire Bus Masters
++#
++# CONFIG_W1_MASTER_DS2490 is not set
++# CONFIG_W1_MASTER_DS1WM is not set
++CONFIG_W1_MASTER_GPIO=y
++
++#
++# 1-wire Slaves
++#
++# CONFIG_W1_SLAVE_THERM is not set
++# CONFIG_W1_SLAVE_SMEM is not set
++# CONFIG_W1_SLAVE_DS2431 is not set
++# CONFIG_W1_SLAVE_DS2433 is not set
++# CONFIG_W1_SLAVE_DS2760 is not set
++# CONFIG_W1_SLAVE_BQ27000 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_UCB1400_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
++
++#
++# Multimedia devices
++#
++
++#
++# Multimedia core support
++#
++# CONFIG_VIDEO_DEV is not set
++# CONFIG_DVB_CORE is not set
++# CONFIG_VIDEO_MEDIA is not set
++
++#
++# Multimedia drivers
++#
++# CONFIG_DAB is not set
++
++#
++# Graphics support
++#
++# CONFIG_VGASTATE is not set
++CONFIG_VIDEO_OUTPUT_CONTROL=y
++CONFIG_FB=y
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB_DDC is not set
++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
++# CONFIG_FB_SYS_FILLRECT is not set
++# CONFIG_FB_SYS_COPYAREA is not set
++# CONFIG_FB_SYS_IMAGEBLIT is not set
++# CONFIG_FB_FOREIGN_ENDIAN is not set
++# CONFIG_FB_SYS_FOPS is not set
++# CONFIG_FB_SVGALIB is not set
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_BACKLIGHT is not set
++# CONFIG_FB_MODE_HELPERS is not set
++# CONFIG_FB_TILEBLITTING is not set
++
++#
++# Frame buffer hardware drivers
++#
++# CONFIG_FB_S1D15605 is not set
++# CONFIG_FB_S1D13XXX is not set
++CONFIG_FB_ATMEL=y
++# CONFIG_FB_VIRTUAL is not set
++# CONFIG_FB_METRONOME is not set
++# CONFIG_FB_MB862XX is not set
++# CONFIG_FB_BROADSHEET is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_LCD_CLASS_DEVICE=y
++# CONFIG_LCD_LTV350QV is not set
++# CONFIG_LCD_ILI9320 is not set
++# CONFIG_LCD_TDO24M is not set
++# CONFIG_LCD_VGG2432A4 is not set
++CONFIG_LCD_PLATFORM=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++CONFIG_BACKLIGHT_ATMEL_LCDC=y
++# CONFIG_BACKLIGHT_GENERIC 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_FRAMEBUFFER_CONSOLE is not set
++CONFIG_LOGO=y
++# CONFIG_LOGO_LINUX_MONO is not set
++# CONFIG_LOGO_LINUX_VGA16 is not set
++CONFIG_LOGO_LINUX_CLUT224=y
++CONFIG_SOUND=y
++CONFIG_SOUND_OSS_CORE=y
++CONFIG_SND=y
++CONFIG_SND_TIMER=y
++CONFIG_SND_PCM=y
++# CONFIG_SND_SEQUENCER is not set
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=y
++CONFIG_SND_PCM_OSS=y
++CONFIG_SND_PCM_OSS_PLUGINS=y
++# CONFIG_SND_DYNAMIC_MINORS is not set
++CONFIG_SND_SUPPORT_OLD_API=y
++CONFIG_SND_VERBOSE_PROCFS=y
++# CONFIG_SND_VERBOSE_PRINTK is not set
++# CONFIG_SND_DEBUG is not set
++CONFIG_SND_VMASTER=y
++CONFIG_SND_AC97_CODEC=y
++# CONFIG_SND_DRIVERS is not set
++# CONFIG_SND_ARM is not set
++
++#
++# Atmel devices (AVR32 and AT91)
++#
++CONFIG_SND_ATMEL_AC97C=y
++# CONFIG_SND_SPI is not set
++# CONFIG_SND_USB is not set
++# CONFIG_SND_PCMCIA is not set
++# CONFIG_SND_SOC is not set
++# CONFIG_SOUND_PRIME is not set
++CONFIG_AC97_BUS=y
++CONFIG_HID_SUPPORT=y
++CONFIG_HID=y
++CONFIG_HID_DEBUG=y
++# CONFIG_HIDRAW is not set
++
++#
++# USB Input Devices
++#
++CONFIG_USB_HID=y
++# CONFIG_HID_PID is not set
++# CONFIG_USB_HIDDEV is not set
++
++#
++# Special HID drivers
++#
++CONFIG_HID_A4TECH=y
++CONFIG_HID_APPLE=y
++CONFIG_HID_BELKIN=y
++CONFIG_HID_CHERRY=y
++CONFIG_HID_CHICONY=y
++CONFIG_HID_CYPRESS=y
++# CONFIG_DRAGONRISE_FF is not set
++CONFIG_HID_EZKEY=y
++CONFIG_HID_KYE=y
++CONFIG_HID_GYRATION=y
++CONFIG_HID_KENSINGTON=y
++CONFIG_HID_LOGITECH=y
++# CONFIG_LOGITECH_FF is not set
++# CONFIG_LOGIRUMBLEPAD2_FF is not set
++CONFIG_HID_MICROSOFT=y
++CONFIG_HID_MONTEREY=y
++CONFIG_HID_NTRIG=y
++CONFIG_HID_PANTHERLORD=y
++# CONFIG_PANTHERLORD_FF is not set
++CONFIG_HID_PETALYNX=y
++CONFIG_HID_SAMSUNG=y
++CONFIG_HID_SONY=y
++CONFIG_HID_SUNPLUS=y
++# CONFIG_GREENASIA_FF is not set
++CONFIG_HID_TOPSEED=y
++# CONFIG_THRUSTMASTER_FF is not set
++# CONFIG_ZEROPLUS_FF is not set
++CONFIG_USB_SUPPORT=y
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++CONFIG_USB_ARCH_HAS_EHCI=y
++CONFIG_USB=y
++# CONFIG_USB_DEBUG is not set
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DEVICE_CLASS is not set
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_OTG is not set
++# CONFIG_USB_MON is not set
++# CONFIG_USB_WUSB is not set
++# CONFIG_USB_WUSB_CBAF is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_C67X00_HCD is not set
++CONFIG_USB_EHCI_HCD=y
++# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
++# CONFIG_USB_EHCI_TT_NEWSCHED is not set
++# CONFIG_USB_OXU210HP_HCD is not set
++# CONFIG_USB_ISP116X_HCD is not set
++# CONFIG_USB_ISP1760_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_HCD is not set
++# CONFIG_USB_HWA_HCD is not set
++# CONFIG_USB_MUSB_HDRC is not set
++# CONFIG_USB_GADGET_MUSB_HDRC is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_ACM is not set
++# CONFIG_USB_PRINTER is not set
++# CONFIG_USB_WDM is not set
++# CONFIG_USB_TMC is not set
++
++#
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
++#
++
++#
++# also be needed; see USB_STORAGE Help for more info
++#
++CONFIG_USB_STORAGE=y
++# CONFIG_USB_STORAGE_DEBUG is not set
++# CONFIG_USB_STORAGE_DATAFAB is not set
++# CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_ISD200 is not set
++# CONFIG_USB_STORAGE_USBAT is not set
++# CONFIG_USB_STORAGE_SDDR09 is not set
++# CONFIG_USB_STORAGE_SDDR55 is not set
++# CONFIG_USB_STORAGE_JUMPSHOT is not set
++# CONFIG_USB_STORAGE_ALAUDA is not set
++# CONFIG_USB_STORAGE_ONETOUCH is not set
++# CONFIG_USB_STORAGE_KARMA is not set
++# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
++# CONFIG_USB_LIBUSUAL is not set
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++
++#
++# USB port drivers
++#
++# CONFIG_USB_SERIAL is not set
++
++#
++# USB Miscellaneous drivers
++#
++# CONFIG_USB_EMI62 is not set
++# CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_SEVSEG is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
++# CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
++# CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_SISUSBVGA is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
++# CONFIG_USB_ISIGHTFW is not set
++# CONFIG_USB_VST is not set
++CONFIG_USB_GADGET=y
++# CONFIG_USB_GADGET_DEBUG is not set
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++# CONFIG_USB_GADGET_DEBUG_FS is not set
++CONFIG_USB_GADGET_VBUS_DRAW=2
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_AT91 is not set
++CONFIG_USB_GADGET_ATMEL_USBA=y
++CONFIG_USB_ATMEL_USBA=y
++# CONFIG_USB_GADGET_FSL_USB2 is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_PXA25X is not set
++# CONFIG_USB_GADGET_PXA27X is not set
++# CONFIG_USB_GADGET_S3C2410 is not set
++# CONFIG_USB_GADGET_IMX is not set
++# CONFIG_USB_GADGET_M66592 is not set
++# CONFIG_USB_GADGET_AMD5536UDC is not set
++# CONFIG_USB_GADGET_FSL_QE is not set
++# CONFIG_USB_GADGET_CI13XXX is not set
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++CONFIG_USB_GADGET_DUALSPEED=y
++# CONFIG_USB_ZERO is not set
++# CONFIG_USB_ETH is not set
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++CONFIG_USB_G_SERIAL=y
++# CONFIG_USB_MIDI_GADGET is not set
++# CONFIG_USB_G_PRINTER is not set
++# CONFIG_USB_CDC_COMPOSITE is not set
++
++#
++# OTG and related infrastructure
++#
++# CONFIG_USB_GPIO_VBUS is not set
++# CONFIG_NOP_USB_XCEIV is not set
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++# CONFIG_MMC_UNSAFE_RESUME is not set
++
++#
++# MMC/SD/SDIO Card Drivers
++#
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_BLOCK_BOUNCE=y
++# CONFIG_SDIO_UART is not set
++# CONFIG_MMC_TEST is not set
++
++#
++# MMC/SD/SDIO Host Controller Drivers
++#
++# CONFIG_MMC_SDHCI is not set
++# CONFIG_MMC_AT91 is not set
++CONFIG_MMC_ATMELMCI=y
++CONFIG_MMC_ATMELMCI_DMA=y
++# CONFIG_MMC_SPI is not set
++# CONFIG_MEMSTICK is not set
++# CONFIG_ACCESSIBILITY is not set
++CONFIG_NEW_LEDS=y
++CONFIG_LEDS_CLASS=y
++
++#
++# LED drivers
++#
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_GPIO_PLATFORM=y
++# CONFIG_LEDS_DAC124S085 is not set
++
++#
++# LED Triggers
++#
++CONFIG_LEDS_TRIGGERS=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
++CONFIG_LEDS_TRIGGER_GPIO=y
++# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
++
++#
++# iptables trigger is under Netfilter config (LED target)
++#
++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
++
++#
++# SPI RTC drivers
++#
++# CONFIG_RTC_DRV_M41T94 is not set
++# CONFIG_RTC_DRV_DS1305 is not set
++# CONFIG_RTC_DRV_DS1390 is not set
++# CONFIG_RTC_DRV_MAX6902 is not set
++# CONFIG_RTC_DRV_R9701 is not set
++# CONFIG_RTC_DRV_RS5C348 is not set
++# CONFIG_RTC_DRV_DS3234 is not set
++
++#
++# 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_AT91SAM9=y
++CONFIG_RTC_DRV_AT91SAM9_RTT=0
++CONFIG_RTC_DRV_AT91SAM9_GPBR=0
++CONFIG_DMADEVICES=y
++
++#
++# DMA Devices
++#
++CONFIG_AT_HDMAC=y
++CONFIG_DMA_ENGINE=y
++
++#
++# DMA Clients
++#
++# CONFIG_NET_DMA is not set
++# CONFIG_ASYNC_TX_DMA is not set
++# CONFIG_DMATEST 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 is not set
++# CONFIG_EXT3_FS is not set
++# CONFIG_EXT4_FS is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_BTRFS_FS is not set
++CONFIG_FILE_LOCKING=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 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 is not set
++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=y
++# CONFIG_JFFS2_FS_XATTR is not set
++CONFIG_JFFS2_COMPRESSION_OPTIONS=y
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_LZO=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++# CONFIG_JFFS2_CMODE_NONE is not set
++CONFIG_JFFS2_CMODE_PRIORITY=y
++# CONFIG_JFFS2_CMODE_SIZE is not set
++# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
++# CONFIG_UBIFS_FS 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 is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFSD is not set
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=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 is not set
++# CONFIG_CIFS 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=y
++# 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 is not set
++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 is not set
++# 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=y
++CONFIG_ENABLE_WARN_DEPRECATED=y
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_FRAME_WARN=1024
++# CONFIG_MAGIC_SYSRQ is not set
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_FS=y
++# 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=y
++# CONFIG_SCHEDSTATS is not set
++CONFIG_TIMER_STATS=y
++# CONFIG_DEBUG_OBJECTS is not set
++# CONFIG_DEBUG_SLAB 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=y
++CONFIG_DEBUG_INFO=y
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_WRITECOUNT is not set
++CONFIG_DEBUG_MEMORY_INIT=y
++# 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
++
++#
++# Tracers
++#
++# CONFIG_FUNCTION_TRACER is not set
++# CONFIG_IRQSOFF_TRACER is not set
++# CONFIG_SCHED_TRACER is not set
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
++# CONFIG_EVENT_TRACER is not set
++# CONFIG_BOOT_TRACER is not set
++# CONFIG_TRACE_BRANCH_PROFILING 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_DYNAMIC_DEBUG 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=y
++# 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_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 is not set
++# CONFIG_CRYPTO_CTR is not set
++# CONFIG_CRYPTO_CTS is not set
++CONFIG_CRYPTO_ECB=y
++# 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 is not set
++# 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 is not set
++# 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=y
++# CONFIG_CRYPTO_ANUBIS is not set
++CONFIG_CRYPTO_ARC4=y
++# 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 is not set
++# 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=y
++CONFIG_CRYPTO_ZLIB=y
++CONFIG_CRYPTO_LZO=y
++
++#
++# Random Number Generation
++#
++# CONFIG_CRYPTO_ANSI_CPRNG is not set
++# CONFIG_CRYPTO_HW is not set
++# CONFIG_BINARY_PRINTF is not set
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++CONFIG_GENERIC_FIND_LAST_BIT=y
++# CONFIG_CRC_CCITT is not set
++CONFIG_CRC16=y
++# 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_LZO_COMPRESS=y
++CONFIG_LZO_DECOMPRESS=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
++CONFIG_HAS_DMA=y
++CONFIG_NLATTR=y
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-add-float-flags-in-Makefile.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-add-float-flags-in-Makefile.patch
new file mode 100644
index 0000000..13a25e1
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-add-float-flags-in-Makefile.patch
@@ -0,0 +1,29 @@
+From e749e6ecd4948a3efc966716b64e66b0efca0da2 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 20 Apr 2010 16:06:20 +0300
+Subject: [[PATCH 08/22] add float flags in Makefile
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ Makefile | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 03373bb..fe3209e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -336,8 +336,8 @@ MODFLAGS = -DMODULE
+ CFLAGS_MODULE = $(MODFLAGS)
+ AFLAGS_MODULE = $(MODFLAGS)
+ LDFLAGS_MODULE =
+-CFLAGS_KERNEL =
+-AFLAGS_KERNEL =
++CFLAGS_KERNEL = -mfloat-abi=soft -mfpu=vfp
++AFLAGS_KERNEL = -mfloat-abi=soft -mfpu=vfp
+
+
+ # Use LINUXINCLUDE when you must reference the include/ directory.
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-pm9g45-default-configuration-files.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-pm9g45-default-configuration-files.patch
deleted file mode 100644
index d78fac0..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0008-pm9g45-default-configuration-files.patch
+++ /dev/null
@@ -1,3358 +0,0 @@
-From 9b8372b14153874ca6d22c21cbd0e9e6ae1c6c72 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 2 Mar 2010 01:56:44 +0200
-Subject: [PATCH] pm9g45: default configuration files
-
----
- arch/arm/configs/pm9g45_defconfig | 1674 ++++++++++++++++++++++++++++++++++
- arch/arm/configs/pm9g45cs6_defconfig | 1657 +++++++++++++++++++++++++++++++++
- 2 files changed, 3331 insertions(+), 0 deletions(-)
- create mode 100644 arch/arm/configs/pm9g45_defconfig
- create mode 100644 arch/arm/configs/pm9g45cs6_defconfig
-
-diff --git a/arch/arm/configs/pm9g45_defconfig b/arch/arm/configs/pm9g45_defconfig
-new file mode 100644
-index 0000000..a57f0f5
---- /dev/null
-+++ b/arch/arm/configs/pm9g45_defconfig
-@@ -0,0 +1,1674 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30.10
-+# Fri Feb 19 20:39:36 2010
-+#
-+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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+CONFIG_TREE_RCU=y
-+# CONFIG_PREEMPT_RCU is not set
-+# CONFIG_RCU_TRACE is not set
-+CONFIG_RCU_FANOUT=32
-+# CONFIG_RCU_FANOUT_EXACT is not set
-+# CONFIG_TREE_RCU_TRACE is not set
-+# CONFIG_PREEMPT_RCU_TRACE is not set
-+# CONFIG_IKCONFIG is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_ALL is not set
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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 is not set
-+
-+#
-+# 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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+# CONFIG_ARCH_AT91SAM9260 is not set
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+CONFIG_ARCH_AT91SAM9G45=y
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9G45 Board Type
-+#
-+# CONFIG_MACH_AT91SAM9G45EKES is not set
-+CONFIG_MACH_PM9G45=y
-+CONFIG_PM9G45_SYSTEM_RAM_CS1=y
-+# CONFIG_PM9G45_SYSTEM_RAM_CS6 is not set
-+CONFIG_PM9G45_LCD_TX09D70=y
-+# CONFIG_PM9G45_LCD_RA158 is not set
-+# CONFIG_PM9G45_LCD_TCG057VGLAC is not set
-+# CONFIG_PM9G45_LCD_GTTV57NN771E0 is not set
-+# CONFIG_PM9G45_LCD_GLAA057VA01CW is not set
-+# CONFIG_PM9G45_LCD_GATW70SN8H1E0 is not set
-+# CONFIG_PM9G45_LCD_CLAA080MB0ACW is not set
-+
-+#
-+# AT91 Board Options
-+#
-+CONFIG_MTD_AT91_DATAFLASH_CARD=y
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# CONFIG_PCI_SYSCALL is not set
-+# CONFIG_ARCH_SUPPORTS_MSI is not set
-+CONFIG_PCCARD=y
-+CONFIG_PCMCIA_DEBUG=y
-+CONFIG_PCMCIA=y
-+# CONFIG_PCMCIA_LOAD_CIS is not set
-+# CONFIG_PCMCIA_IOCTL is not set
-+
-+#
-+# PC-card bridges
-+#
-+CONFIG_AT91_CF=y
-+
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# 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 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+# CONFIG_WIRELESS is not set
-+# 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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND is not set
-+
-+#
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
-+# UBI - Unsorted block images
-+#
-+CONFIG_MTD_UBI=y
-+CONFIG_MTD_UBI_WL_THRESHOLD=4096
-+CONFIG_MTD_UBI_BEB_RESERVE=1
-+# CONFIG_MTD_UBI_GLUEBI is not set
-+
-+#
-+# UBI debugging options
-+#
-+# CONFIG_MTD_UBI_DEBUG 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=4
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+# CONFIG_ATMEL_PWM is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+# CONFIG_EEPROM_93CX6 is not set
-+CONFIG_HAVE_IDE=y
-+CONFIG_IDE=y
-+
-+#
-+# Please see Documentation/ide/ide.txt for help/info on IDE drives
-+#
-+CONFIG_IDE_XFER_MODE=y
-+CONFIG_IDE_TIMINGS=y
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_IDE_GD=y
-+CONFIG_IDE_GD_ATA=y
-+# CONFIG_IDE_GD_ATAPI is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_IDE_TASK_IOCTL is not set
-+CONFIG_IDE_PROC_FS=y
-+
-+#
-+# IDE chipset support/bugfixes
-+#
-+# CONFIG_BLK_DEV_PLATFORM is not set
-+CONFIG_BLK_DEV_IDE_AT91=y
-+# CONFIG_BLK_DEV_IDEDMA 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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 is not set
-+# CONFIG_SCSI_LOWLEVEL_PCMCIA 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_COMPAT_NET_DEV_OPS=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+# CONFIG_DAVICOM_PHY is not set
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+CONFIG_NATIONAL_PHY=y
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_MII is not set
-+CONFIG_MACB=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+# CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+# CONFIG_WLAN_80211 is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_NET_PCMCIA is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# 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=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
-+CONFIG_INPUT_JOYDEV=y
-+CONFIG_INPUT_EVDEV=y
-+CONFIG_INPUT_EVBUG=y
-+
-+#
-+# Input Device Drivers
-+#
-+CONFIG_INPUT_KEYBOARD=y
-+CONFIG_KEYBOARD_ATKBD=y
-+# 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=y
-+CONFIG_MOUSE_PS2_ALPS=y
-+CONFIG_MOUSE_PS2_LOGIPS2PP=y
-+CONFIG_MOUSE_PS2_SYNAPTICS=y
-+CONFIG_MOUSE_PS2_TRACKPOINT=y
-+# CONFIG_MOUSE_PS2_ELANTECH is not set
-+# CONFIG_MOUSE_PS2_TOUCHKIT 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_INPUT_JOYSTICK is not set
-+# CONFIG_INPUT_TABLET is not set
-+CONFIG_INPUT_TOUCHSCREEN=y
-+CONFIG_TOUCHSCREEN_ADS7846=y
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_FUJITSU is not set
-+# CONFIG_TOUCHSCREEN_GUNZE is not set
-+# CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-+# CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
-+# CONFIG_TOUCHSCREEN_MK712 is not set
-+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-+# CONFIG_TOUCHSCREEN_ATMEL_TSADCC is not set
-+# CONFIG_TOUCHSCREEN_WM97XX is not set
-+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-+# CONFIG_INPUT_MISC is not set
-+
-+#
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+CONFIG_SERIO_LIBPS2=y
-+# CONFIG_SERIO_RAW 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-+# CONFIG_R3964 is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+# CONFIG_SYNCLINK_CS is not set
-+# CONFIG_CARDMAN_4000 is not set
-+# CONFIG_CARDMAN_4040 is not set
-+# CONFIG_IPWIRELESS is not set
-+# CONFIG_RAW_DRIVER is not set
-+# CONFIG_TCG_TPM is not set
-+# CONFIG_I2C is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_DEBUG=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_DEBUG_GPIO is not set
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# I2C GPIO expanders:
-+#
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+CONFIG_W1=y
-+
-+#
-+# 1-wire Bus Masters
-+#
-+# CONFIG_W1_MASTER_DS2490 is not set
-+# CONFIG_W1_MASTER_DS1WM is not set
-+CONFIG_W1_MASTER_GPIO=y
-+
-+#
-+# 1-wire Slaves
-+#
-+# CONFIG_W1_SLAVE_THERM is not set
-+# CONFIG_W1_SLAVE_SMEM is not set
-+# CONFIG_W1_SLAVE_DS2431 is not set
-+# CONFIG_W1_SLAVE_DS2433 is not set
-+# CONFIG_W1_SLAVE_DS2760 is not set
-+# CONFIG_W1_SLAVE_BQ27000 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_UCB1400_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
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB is not set
-+
-+#
-+# Graphics support
-+#
-+# CONFIG_VGASTATE is not set
-+CONFIG_VIDEO_OUTPUT_CONTROL=y
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-+# CONFIG_FB_SYS_FILLRECT is not set
-+# CONFIG_FB_SYS_COPYAREA is not set
-+# CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
-+# CONFIG_FB_SYS_FOPS is not set
-+# CONFIG_FB_SVGALIB is not set
-+# CONFIG_FB_MACMODES is not set
-+# CONFIG_FB_BACKLIGHT is not set
-+# CONFIG_FB_MODE_HELPERS is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_S1D15605 is not set
-+# CONFIG_FB_S1D13XXX is not set
-+CONFIG_FB_ATMEL=y
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+CONFIG_LCD_CLASS_DEVICE=y
-+# CONFIG_LCD_LTV350QV is not set
-+# CONFIG_LCD_ILI9320 is not set
-+# CONFIG_LCD_TDO24M is not set
-+# CONFIG_LCD_VGG2432A4 is not set
-+CONFIG_LCD_PLATFORM=y
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_GENERIC is not set
-+
-+#
-+# Display device support
-+#
-+CONFIG_DISPLAY_SUPPORT=y
-+
-+#
-+# Display hardware drivers
-+#
-+
-+#
-+# Console display driver support
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FRAMEBUFFER_CONSOLE=y
-+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-+CONFIG_FONTS=y
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_7x14 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+# CONFIG_FONT_MINI_4x6 is not set
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_10x18 is not set
-+CONFIG_LOGO=y
-+# CONFIG_LOGO_LINUX_MONO is not set
-+# CONFIG_LOGO_LINUX_VGA16 is not set
-+CONFIG_LOGO_LINUX_CLUT224=y
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_OSS_CORE is not set
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+# CONFIG_SND_SEQUENCER is not set
-+# CONFIG_SND_MIXER_OSS is not set
-+# CONFIG_SND_PCM_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+CONFIG_SND_SUPPORT_OLD_API=y
-+CONFIG_SND_VERBOSE_PROCFS=y
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+CONFIG_SND_VMASTER=y
-+CONFIG_SND_AC97_CODEC=y
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+CONFIG_SND_ATMEL_AC97C=y
-+# CONFIG_SND_SPI is not set
-+# CONFIG_SND_USB is not set
-+# CONFIG_SND_PCMCIA is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_AC97_BUS=y
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+CONFIG_HID_DEBUG=y
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+CONFIG_USB_HID=y
-+# CONFIG_HID_PID is not set
-+# CONFIG_USB_HIDDEV is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_HID_A4TECH=y
-+CONFIG_HID_APPLE=y
-+CONFIG_HID_BELKIN=y
-+CONFIG_HID_CHERRY=y
-+CONFIG_HID_CHICONY=y
-+CONFIG_HID_CYPRESS=y
-+# CONFIG_DRAGONRISE_FF is not set
-+CONFIG_HID_EZKEY=y
-+CONFIG_HID_KYE=y
-+CONFIG_HID_GYRATION=y
-+CONFIG_HID_KENSINGTON=y
-+CONFIG_HID_LOGITECH=y
-+# CONFIG_LOGITECH_FF is not set
-+# CONFIG_LOGIRUMBLEPAD2_FF is not set
-+CONFIG_HID_MICROSOFT=y
-+CONFIG_HID_MONTEREY=y
-+CONFIG_HID_NTRIG=y
-+CONFIG_HID_PANTHERLORD=y
-+# CONFIG_PANTHERLORD_FF is not set
-+CONFIG_HID_PETALYNX=y
-+CONFIG_HID_SAMSUNG=y
-+CONFIG_HID_SONY=y
-+CONFIG_HID_SUNPLUS=y
-+# CONFIG_GREENASIA_FF is not set
-+CONFIG_HID_TOPSEED=y
-+# CONFIG_THRUSTMASTER_FF is not set
-+# CONFIG_ZEROPLUS_FF is not set
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+CONFIG_USB_ARCH_HAS_EHCI=y
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+CONFIG_USB_EHCI_HCD=y
-+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_SISUSBVGA is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG is not set
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+# CONFIG_USB_GADGET_DEBUG_FS is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+# CONFIG_USB_GADGET_AT91 is not set
-+CONFIG_USB_GADGET_ATMEL_USBA=y
-+CONFIG_USB_ATMEL_USBA=y
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+CONFIG_USB_GADGET_DUALSPEED=y
-+# CONFIG_USB_ZERO is not set
-+# CONFIG_USB_ETH is not set
-+# CONFIG_USB_GADGETFS is not set
-+# CONFIG_USB_FILE_STORAGE is not set
-+CONFIG_USB_G_SERIAL=y
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+# CONFIG_USB_CDC_COMPOSITE is not set
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+# CONFIG_SDIO_UART is not set
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+# CONFIG_MMC_AT91 is not set
-+CONFIG_MMC_ATMELMCI=y
-+CONFIG_MMC_ATMELMCI_DMA=y
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+CONFIG_DMADEVICES=y
-+
-+#
-+# DMA Devices
-+#
-+CONFIG_AT_HDMAC=y
-+CONFIG_DMA_ENGINE=y
-+
-+#
-+# DMA Clients
-+#
-+# CONFIG_NET_DMA is not set
-+# CONFIG_ASYNC_TX_DMA is not set
-+# CONFIG_DMATEST 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 is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_FILE_LOCKING=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 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 is not set
-+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=y
-+# CONFIG_JFFS2_FS_XATTR is not set
-+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-+CONFIG_JFFS2_ZLIB=y
-+CONFIG_JFFS2_LZO=y
-+CONFIG_JFFS2_RTIME=y
-+# CONFIG_JFFS2_RUBIN is not set
-+# CONFIG_JFFS2_CMODE_NONE is not set
-+CONFIG_JFFS2_CMODE_PRIORITY=y
-+# CONFIG_JFFS2_CMODE_SIZE is not set
-+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-+# CONFIG_UBIFS_FS 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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 is not set
-+# 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=y
-+CONFIG_ENABLE_WARN_DEPRECATED=y
-+CONFIG_ENABLE_MUST_CHECK=y
-+CONFIG_FRAME_WARN=1024
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_UNUSED_SYMBOLS is not set
-+CONFIG_DEBUG_FS=y
-+# 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=y
-+# CONFIG_SCHEDSTATS is not set
-+CONFIG_TIMER_STATS=y
-+# CONFIG_DEBUG_OBJECTS is not set
-+# CONFIG_DEBUG_SLAB 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=y
-+CONFIG_DEBUG_INFO=y
-+# CONFIG_DEBUG_VM is not set
-+# CONFIG_DEBUG_WRITECOUNT is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# 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
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_DYNAMIC_DEBUG 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=y
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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=y
-+CONFIG_CRYPTO_ZLIB=y
-+CONFIG_CRYPTO_LZO=y
-+
-+#
-+# Random Number Generation
-+#
-+# CONFIG_CRYPTO_ANSI_CPRNG is not set
-+# CONFIG_CRYPTO_HW is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+CONFIG_CRC16=y
-+# 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_LZO_COMPRESS=y
-+CONFIG_LZO_DECOMPRESS=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-diff --git a/arch/arm/configs/pm9g45cs6_defconfig b/arch/arm/configs/pm9g45cs6_defconfig
-new file mode 100644
-index 0000000..724bd99
---- /dev/null
-+++ b/arch/arm/configs/pm9g45cs6_defconfig
-@@ -0,0 +1,1657 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30.10
-+# Sun Feb 28 13:56:37 2010
-+#
-+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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+CONFIG_TREE_RCU=y
-+# CONFIG_PREEMPT_RCU is not set
-+# CONFIG_RCU_TRACE is not set
-+CONFIG_RCU_FANOUT=32
-+# CONFIG_RCU_FANOUT_EXACT is not set
-+# CONFIG_TREE_RCU_TRACE is not set
-+# CONFIG_PREEMPT_RCU_TRACE is not set
-+# CONFIG_IKCONFIG is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_ALL is not set
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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 is not set
-+
-+#
-+# 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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+# CONFIG_ARCH_AT91SAM9260 is not set
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+CONFIG_ARCH_AT91SAM9G45=y
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9G45 Board Type
-+#
-+# CONFIG_MACH_AT91SAM9G45EKES is not set
-+CONFIG_MACH_PM9G45=y
-+# CONFIG_PM9G45_SYSTEM_RAM_CS1 is not set
-+CONFIG_PM9G45_SYSTEM_RAM_CS6=y
-+CONFIG_VRAM_SIZE=0x8000000
-+CONFIG_PM9G45_LCD_TX09D70=y
-+# CONFIG_PM9G45_LCD_RA158 is not set
-+# CONFIG_PM9G45_LCD_TCG057VGLAC is not set
-+# CONFIG_PM9G45_LCD_GTTV57NN771E0 is not set
-+# CONFIG_PM9G45_LCD_GLAA057VA01CW is not set
-+# CONFIG_PM9G45_LCD_GATW70SN8H1E0 is not set
-+# CONFIG_PM9G45_LCD_CLAA080MB0ACW is not set
-+
-+#
-+# AT91 Board Options
-+#
-+CONFIG_MTD_AT91_DATAFLASH_CARD=y
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# CONFIG_PCI_SYSCALL is not set
-+# CONFIG_ARCH_SUPPORTS_MSI is not set
-+CONFIG_PCCARD=y
-+CONFIG_PCMCIA_DEBUG=y
-+CONFIG_PCMCIA=y
-+# CONFIG_PCMCIA_LOAD_CIS is not set
-+# CONFIG_PCMCIA_IOCTL is not set
-+
-+#
-+# PC-card bridges
-+#
-+CONFIG_AT91_CF=y
-+
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="mem=64M fbcon=rotate:3 root=/dev/mtdblock4 rw mtdparts=atmel_nand:128k(bootstrap)ro,256k(uboot)ro,1664k(env),2M(linux),-(root) rootfstype=jffs2"
-+# 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 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+# CONFIG_WIRELESS is not set
-+# 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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND is not set
-+
-+#
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
-+# UBI - Unsorted block images
-+#
-+CONFIG_MTD_UBI=y
-+CONFIG_MTD_UBI_WL_THRESHOLD=4096
-+CONFIG_MTD_UBI_BEB_RESERVE=1
-+# CONFIG_MTD_UBI_GLUEBI is not set
-+
-+#
-+# UBI debugging options
-+#
-+# CONFIG_MTD_UBI_DEBUG 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+# CONFIG_BLK_DEV_RAM is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+# CONFIG_ATMEL_PWM is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+# CONFIG_EEPROM_93CX6 is not set
-+CONFIG_HAVE_IDE=y
-+CONFIG_IDE=y
-+
-+#
-+# Please see Documentation/ide/ide.txt for help/info on IDE drives
-+#
-+CONFIG_IDE_XFER_MODE=y
-+CONFIG_IDE_TIMINGS=y
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_IDE_GD=y
-+CONFIG_IDE_GD_ATA=y
-+# CONFIG_IDE_GD_ATAPI is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_IDE_TASK_IOCTL is not set
-+CONFIG_IDE_PROC_FS=y
-+
-+#
-+# IDE chipset support/bugfixes
-+#
-+# CONFIG_BLK_DEV_PLATFORM is not set
-+CONFIG_BLK_DEV_IDE_AT91=y
-+# CONFIG_BLK_DEV_IDEDMA 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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 is not set
-+# CONFIG_SCSI_LOWLEVEL_PCMCIA 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_COMPAT_NET_DEV_OPS=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+# CONFIG_DAVICOM_PHY is not set
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+CONFIG_NATIONAL_PHY=y
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_MII is not set
-+CONFIG_MACB=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+# CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+# CONFIG_WLAN_80211 is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_NET_PCMCIA is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# 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=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
-+CONFIG_INPUT_JOYDEV=y
-+CONFIG_INPUT_EVDEV=y
-+CONFIG_INPUT_EVBUG=y
-+
-+#
-+# Input Device Drivers
-+#
-+CONFIG_INPUT_KEYBOARD=y
-+CONFIG_KEYBOARD_ATKBD=y
-+# 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=y
-+CONFIG_MOUSE_PS2_ALPS=y
-+CONFIG_MOUSE_PS2_LOGIPS2PP=y
-+CONFIG_MOUSE_PS2_SYNAPTICS=y
-+CONFIG_MOUSE_PS2_TRACKPOINT=y
-+# CONFIG_MOUSE_PS2_ELANTECH is not set
-+# CONFIG_MOUSE_PS2_TOUCHKIT 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_INPUT_JOYSTICK is not set
-+# CONFIG_INPUT_TABLET is not set
-+CONFIG_INPUT_TOUCHSCREEN=y
-+CONFIG_TOUCHSCREEN_ADS7846=y
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_FUJITSU is not set
-+# CONFIG_TOUCHSCREEN_GUNZE is not set
-+# CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-+# CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
-+# CONFIG_TOUCHSCREEN_MK712 is not set
-+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-+# CONFIG_TOUCHSCREEN_ATMEL_TSADCC is not set
-+# CONFIG_TOUCHSCREEN_WM97XX is not set
-+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-+# CONFIG_INPUT_MISC is not set
-+
-+#
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+CONFIG_SERIO_LIBPS2=y
-+# CONFIG_SERIO_RAW 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-+# CONFIG_R3964 is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+# CONFIG_SYNCLINK_CS is not set
-+# CONFIG_CARDMAN_4000 is not set
-+# CONFIG_CARDMAN_4040 is not set
-+# CONFIG_IPWIRELESS is not set
-+# CONFIG_RAW_DRIVER is not set
-+# CONFIG_TCG_TPM is not set
-+# CONFIG_I2C is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_DEBUG=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_DEBUG_GPIO is not set
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# I2C GPIO expanders:
-+#
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+CONFIG_W1=y
-+
-+#
-+# 1-wire Bus Masters
-+#
-+# CONFIG_W1_MASTER_DS2490 is not set
-+# CONFIG_W1_MASTER_DS1WM is not set
-+CONFIG_W1_MASTER_GPIO=y
-+
-+#
-+# 1-wire Slaves
-+#
-+# CONFIG_W1_SLAVE_THERM is not set
-+# CONFIG_W1_SLAVE_SMEM is not set
-+# CONFIG_W1_SLAVE_DS2431 is not set
-+# CONFIG_W1_SLAVE_DS2433 is not set
-+# CONFIG_W1_SLAVE_DS2760 is not set
-+# CONFIG_W1_SLAVE_BQ27000 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_UCB1400_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
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB is not set
-+
-+#
-+# Graphics support
-+#
-+# CONFIG_VGASTATE is not set
-+CONFIG_VIDEO_OUTPUT_CONTROL=y
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-+# CONFIG_FB_SYS_FILLRECT is not set
-+# CONFIG_FB_SYS_COPYAREA is not set
-+# CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
-+# CONFIG_FB_SYS_FOPS is not set
-+# CONFIG_FB_SVGALIB is not set
-+# CONFIG_FB_MACMODES is not set
-+# CONFIG_FB_BACKLIGHT is not set
-+# CONFIG_FB_MODE_HELPERS is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_S1D15605 is not set
-+# CONFIG_FB_S1D13XXX is not set
-+CONFIG_FB_ATMEL=y
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+CONFIG_LCD_CLASS_DEVICE=y
-+# CONFIG_LCD_LTV350QV is not set
-+# CONFIG_LCD_ILI9320 is not set
-+# CONFIG_LCD_TDO24M is not set
-+# CONFIG_LCD_VGG2432A4 is not set
-+CONFIG_LCD_PLATFORM=y
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_GENERIC 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_FRAMEBUFFER_CONSOLE is not set
-+CONFIG_LOGO=y
-+# CONFIG_LOGO_LINUX_MONO is not set
-+# CONFIG_LOGO_LINUX_VGA16 is not set
-+CONFIG_LOGO_LINUX_CLUT224=y
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+# CONFIG_SND_SEQUENCER is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+CONFIG_SND_SUPPORT_OLD_API=y
-+CONFIG_SND_VERBOSE_PROCFS=y
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+CONFIG_SND_VMASTER=y
-+CONFIG_SND_AC97_CODEC=y
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+CONFIG_SND_ATMEL_AC97C=y
-+# CONFIG_SND_SPI is not set
-+# CONFIG_SND_USB is not set
-+# CONFIG_SND_PCMCIA is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_AC97_BUS=y
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+CONFIG_HID_DEBUG=y
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+CONFIG_USB_HID=y
-+# CONFIG_HID_PID is not set
-+# CONFIG_USB_HIDDEV is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_HID_A4TECH=y
-+CONFIG_HID_APPLE=y
-+CONFIG_HID_BELKIN=y
-+CONFIG_HID_CHERRY=y
-+CONFIG_HID_CHICONY=y
-+CONFIG_HID_CYPRESS=y
-+# CONFIG_DRAGONRISE_FF is not set
-+CONFIG_HID_EZKEY=y
-+CONFIG_HID_KYE=y
-+CONFIG_HID_GYRATION=y
-+CONFIG_HID_KENSINGTON=y
-+CONFIG_HID_LOGITECH=y
-+# CONFIG_LOGITECH_FF is not set
-+# CONFIG_LOGIRUMBLEPAD2_FF is not set
-+CONFIG_HID_MICROSOFT=y
-+CONFIG_HID_MONTEREY=y
-+CONFIG_HID_NTRIG=y
-+CONFIG_HID_PANTHERLORD=y
-+# CONFIG_PANTHERLORD_FF is not set
-+CONFIG_HID_PETALYNX=y
-+CONFIG_HID_SAMSUNG=y
-+CONFIG_HID_SONY=y
-+CONFIG_HID_SUNPLUS=y
-+# CONFIG_GREENASIA_FF is not set
-+CONFIG_HID_TOPSEED=y
-+# CONFIG_THRUSTMASTER_FF is not set
-+# CONFIG_ZEROPLUS_FF is not set
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+CONFIG_USB_ARCH_HAS_EHCI=y
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+CONFIG_USB_EHCI_HCD=y
-+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_SISUSBVGA is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG is not set
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+# CONFIG_USB_GADGET_DEBUG_FS is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+# CONFIG_USB_GADGET_AT91 is not set
-+CONFIG_USB_GADGET_ATMEL_USBA=y
-+CONFIG_USB_ATMEL_USBA=y
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+CONFIG_USB_GADGET_DUALSPEED=y
-+# CONFIG_USB_ZERO is not set
-+# CONFIG_USB_ETH is not set
-+# CONFIG_USB_GADGETFS is not set
-+# CONFIG_USB_FILE_STORAGE is not set
-+CONFIG_USB_G_SERIAL=y
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+# CONFIG_USB_CDC_COMPOSITE is not set
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+# CONFIG_SDIO_UART is not set
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+# CONFIG_MMC_AT91 is not set
-+CONFIG_MMC_ATMELMCI=y
-+CONFIG_MMC_ATMELMCI_DMA=y
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+CONFIG_DMADEVICES=y
-+
-+#
-+# DMA Devices
-+#
-+CONFIG_AT_HDMAC=y
-+CONFIG_DMA_ENGINE=y
-+
-+#
-+# DMA Clients
-+#
-+# CONFIG_NET_DMA is not set
-+# CONFIG_ASYNC_TX_DMA is not set
-+# CONFIG_DMATEST 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 is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_FILE_LOCKING=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 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 is not set
-+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=y
-+# CONFIG_JFFS2_FS_XATTR is not set
-+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-+CONFIG_JFFS2_ZLIB=y
-+CONFIG_JFFS2_LZO=y
-+CONFIG_JFFS2_RTIME=y
-+# CONFIG_JFFS2_RUBIN is not set
-+# CONFIG_JFFS2_CMODE_NONE is not set
-+CONFIG_JFFS2_CMODE_PRIORITY=y
-+# CONFIG_JFFS2_CMODE_SIZE is not set
-+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-+# CONFIG_UBIFS_FS 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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 is not set
-+# 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=y
-+CONFIG_ENABLE_WARN_DEPRECATED=y
-+CONFIG_ENABLE_MUST_CHECK=y
-+CONFIG_FRAME_WARN=1024
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_UNUSED_SYMBOLS is not set
-+CONFIG_DEBUG_FS=y
-+# 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=y
-+# CONFIG_SCHEDSTATS is not set
-+CONFIG_TIMER_STATS=y
-+# CONFIG_DEBUG_OBJECTS is not set
-+# CONFIG_DEBUG_SLAB 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=y
-+CONFIG_DEBUG_INFO=y
-+# CONFIG_DEBUG_VM is not set
-+# CONFIG_DEBUG_WRITECOUNT is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# 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
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_DYNAMIC_DEBUG 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=y
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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=y
-+CONFIG_CRYPTO_ZLIB=y
-+CONFIG_CRYPTO_LZO=y
-+
-+#
-+# Random Number Generation
-+#
-+# CONFIG_CRYPTO_ANSI_CPRNG is not set
-+# CONFIG_CRYPTO_HW is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+CONFIG_CRC16=y
-+# 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_LZO_COMPRESS=y
-+CONFIG_LZO_DECOMPRESS=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-add-float-flags-in-Makefile.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-add-float-flags-in-Makefile.patch
deleted file mode 100644
index 8ed9be3..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-add-float-flags-in-Makefile.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 2c11c12dcc449228a9996b194220c51bf0bd4156 Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Tue, 20 Apr 2010 16:06:20 +0300
-Subject: [PATCH] add float flags in Makefile
-
----
- Makefile | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index b92ad41..171e1d1 100644
---- a/Makefile
-+++ b/Makefile
-@@ -336,8 +336,8 @@ MODFLAGS = -DMODULE
- CFLAGS_MODULE = $(MODFLAGS)
- AFLAGS_MODULE = $(MODFLAGS)
- LDFLAGS_MODULE =
--CFLAGS_KERNEL =
--AFLAGS_KERNEL =
-+CFLAGS_KERNEL = -mfloat-abi=soft -mfpu=vfp
-+AFLAGS_KERNEL = -mfloat-abi=soft -mfpu=vfp
-
-
- # Use LINUXINCLUDE when you must reference the include/ directory.
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-conditional-compile-if-DEDICATED_VRAM.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-conditional-compile-if-DEDICATED_VRAM.patch
new file mode 100644
index 0000000..b717a88
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0009-conditional-compile-if-DEDICATED_VRAM.patch
@@ -0,0 +1,73 @@
+From ca30d75c61c9e37673815ccc325262b1f085f840 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 19 Oct 2010 16:39:22 +0300
+Subject: [[PATCH 09/22] conditional compile if DEDICATED_VRAM
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 13 +++++++++++++
+ arch/arm/mach-at91/include/mach/at91sam9g45.h | 8 +++++---
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index aa64b39..23c892e 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -271,12 +271,22 @@ static struct resource lcdc_resources[] = {
+ .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
++#if CONFIG_PM9G45_DEDICATED_VRAM
++/*
++ * atmel_lcdfb_probe() checks if record 1 is IORESOURCE_MEM
++ * if not then allocates spave in system ram
++ */
+ [1] = {
+ .start = CONFIG_VRAM_BASE,
+ .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
++#endif
++#if CONFIG_PM9G45_DEDICATED_VRAM
+ [2] = {
++#else
++ [1] = {
++#endif
+ .start = AT91SAM9G45_ID_LCDC,
+ .end = AT91SAM9G45_ID_LCDC,
+ .flags = IORESOURCE_IRQ,
+@@ -350,8 +360,11 @@ static struct fb_videomode at91_tft_vga_modes[] = {
+ .lower_margin = 0,
+ .hsync_len = 5,
+ .vsync_len = 1,
++ /*
+ .sync = FB_SYNC_HOR_HIGH_ACT |
+ FB_SYNC_VERT_HIGH_ACT,
++ */
++ .sync = 0,
+ .vmode = FB_VMODE_NONINTERLACED,
+ },
+ };
+diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+index 324d876..826c764 100644
+--- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
++++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+@@ -143,9 +143,11 @@
+ #define CONFIG_VRAM_SIZE SZ_64M
+ #elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+-#define CONFIG_DRAM_SIZE SZ_64M
+-#define CONFIG_VRAM_BASE AT91_CHIPSELECT_1
+-#define CONFIG_VRAM_SIZE_ SZ_128M
++/*
++#if CONFIG_PM9G45_DEDICATED_VRAM
++#define CONFIG_DRAM_SIZE SZ_64M - CONFIG_VRAM_SIZE
++#define CONFIG_VRAM_BASE AT91_CHIPSELECT_6 + CONFIG_DRAM_SIZE
++*/
+ #else
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+ #endif
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-add-pm9g45-board-version-1.2-and-adjust-memory-selec.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-add-pm9g45-board-version-1.2-and-adjust-memory-selec.patch
new file mode 100644
index 0000000..b53e8e4
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-add-pm9g45-board-version-1.2-and-adjust-memory-selec.patch
@@ -0,0 +1,139 @@
+From 60efa735a6e9dc13119183d968e320e41e5b6654 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 19 Oct 2010 17:33:48 +0300
+Subject: [[PATCH 10/22] add pm9g45 board version 1.2, and adjust memory
+ selection
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/Kconfig | 36 ++++++++++++++++++++++---
+ arch/arm/mach-at91/board-pm9g45.c | 4 +--
+ arch/arm/mach-at91/include/mach/at91sam9g45.h | 15 +++++++---
+ 3 files changed, 43 insertions(+), 12 deletions(-)
+
+diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
+index ab7e4e2..f9fd9dc 100644
+--- a/arch/arm/mach-at91/Kconfig
++++ b/arch/arm/mach-at91/Kconfig
+@@ -420,8 +420,30 @@ config MACH_PM9G45
+ Select this if you are using Ronetix's PM9G45 board.
+ <http://ronetix.at/starter_kit_9g45.html>
+ choice
+- prompt "System RAM base address"
++ prompt "PM9G45 board version"
+ depends on MACH_PM9G45
++ default MACH_PM9G45_V1_2
++ help
++ The version is writted out on the board.
++
++config MACH_PM9G45_V1_1
++ bool "v1.1"
++ depends on MACH_PM9G45
++ help
++ Has two RAM memories on CS1 and CS6.
++
++config MACH_PM9G45_V1_2
++ bool "v1.2"
++ depends on MACH_PM9G45
++ select AUTO_VRAM_SIZE
++ help
++ Has one RAM memory on CS6.
++
++endchoice
++
++choice
++ prompt "System RAM base address"
++ depends on (MACH_PM9G45 && MACH_PM9G45_V1_1)
+ help
+ AT91SAM9G45 has two DDR2 controlers, one CS1 on 0x20000000
+ and CS6 on 0x70000000 memmory addresses. You can choose
+@@ -429,21 +451,27 @@ choice
+
+ config PM9G45_SYSTEM_RAM_CS1
+ bool "System RAM: CS1 on 0x20000000 with 128MB"
+- depends on MACH_PM9G45
+ help
+ CS1 will be used for system ram and CS6 for video memory.
+
+ config PM9G45_SYSTEM_RAM_CS6
+ bool "System RAM: CS6 on 0x70000000"
+- depends on MACH_PM9G45
+ help
+ CS6 will be used for system ram and for video ram.
+
+ endchoice
+
++config AUTO_VRAM_SIZE
++ bool "Reserve video memory automatic"
++ depends on PM9G45_SYSTEM_RAM_CS6
++ default n if PM9G45_SYSTEM_RAM_CS1
++ help
++ The automatic reservasion is based on the screen resolution
++ and bits per pixel. Manualy reserver memory VRAM_SIZE for video.
++
+ config VRAM_SIZE
+ prompt "Video RAM size"
+- depends on (MACH_PM9G45 && PM9G45_SYSTEM_RAM_CS6)
++ depends on (MACH_PM9G45_V1_1 && PM9G45_SYSTEM_RAM_CS6 && AUTO_VRAM_SIZE=n)
+ hex
+ help
+ Determine the size of ram for video. It will be located at the end of CS6.
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index 23c892e..b368d66 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -271,7 +271,7 @@ static struct resource lcdc_resources[] = {
+ .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+-#if CONFIG_PM9G45_DEDICATED_VRAM
++#ifndef CONFIG_AUTO_VRAM_SIZE
+ /*
+ * atmel_lcdfb_probe() checks if record 1 is IORESOURCE_MEM
+ * if not then allocates spave in system ram
+@@ -281,8 +281,6 @@ static struct resource lcdc_resources[] = {
+ .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
+-#endif
+-#if CONFIG_PM9G45_DEDICATED_VRAM
+ [2] = {
+ #else
+ [1] = {
+diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+index 826c764..a818792 100644
+--- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
++++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
+@@ -136,18 +136,23 @@
+ */
+ #if defined(CONFIG_MACH_AT91SAM9G45EKES)
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+-#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
++#elif defined(CONFIG_MACH_PM9G45_V1_1) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_1
+ #define CONFIG_DRAM_SIZE SZ_128M
+ #define CONFIG_VRAM_BASE AT91_CHIPSELECT_6
+ #define CONFIG_VRAM_SIZE SZ_64M
+-#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
++#elif defined(CONFIG_MACH_PM9G45_V1_1) && \
++ defined(CONFIG_PM9G45_SYSTEM_RAM_CS6) && \
++ defined(CONFIG_AUTO_VRAM_SIZE)
++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
++#elif defined(CONFIG_MACH_PM9G45_V1_1) && \
++ defined(CONFIG_PM9G45_SYSTEM_RAM_CS6) && \
++ CONFIG_AUTO_VRAM_SIZE == y
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+-/*
+-#if CONFIG_PM9G45_DEDICATED_VRAM
+ #define CONFIG_DRAM_SIZE SZ_64M - CONFIG_VRAM_SIZE
+ #define CONFIG_VRAM_BASE AT91_CHIPSELECT_6 + CONFIG_DRAM_SIZE
+-*/
++#elif defined(CONFIG_MACH_PM9G45_V1_2)
++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+ #else
+ #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
+ #endif
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-conditional-compile-if-DEDICATED_VRAM.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-conditional-compile-if-DEDICATED_VRAM.patch
deleted file mode 100644
index d398436..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0010-conditional-compile-if-DEDICATED_VRAM.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 4b46d47b680a721057519c68f0ab8f291d39858e Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Wed, 12 May 2010 23:48:59 +0300
-Subject: [PATCH] conditional compile if DEDICATED_VRAM
-
----
- arch/arm/mach-at91/board-pm9g45.c | 13 +++++++++++++
- arch/arm/mach-at91/include/mach/at91sam9g45.h | 8 +++++---
- 2 files changed, 18 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
-index 63e5ee1..fa142cf 100644
---- a/arch/arm/mach-at91/board-pm9g45.c
-+++ b/arch/arm/mach-at91/board-pm9g45.c
-@@ -270,12 +270,22 @@ static struct resource lcdc_resources[] = {
- .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
-+#if CONFIG_PM9G45_DEDICATED_VRAM
-+/*
-+ * atmel_lcdfb_probe() checks if record 1 is IORESOURCE_MEM
-+ * if not then allocates spave in system ram
-+ */
- [1] = {
- .start = CONFIG_VRAM_BASE,
- .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-+#endif
-+#if CONFIG_PM9G45_DEDICATED_VRAM
- [2] = {
-+#else
-+ [1] = {
-+#endif
- .start = AT91SAM9G45_ID_LCDC,
- .end = AT91SAM9G45_ID_LCDC,
- .flags = IORESOURCE_IRQ,
-@@ -349,7 +359,10 @@ static struct fb_videomode at91_tft_vga_modes[] = {
- .lower_margin = 0,
- .hsync_len = 5,
- .vsync_len = 1,
-+ /*
- .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ */
-+ .sync = 0,
- .vmode = FB_VMODE_NONINTERLACED,
- },
- };
-diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-index 324d876..826c764 100644
---- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
-+++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-@@ -143,9 +143,11 @@
- #define CONFIG_VRAM_SIZE SZ_64M
- #elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
--#define CONFIG_DRAM_SIZE SZ_64M
--#define CONFIG_VRAM_BASE AT91_CHIPSELECT_1
--#define CONFIG_VRAM_SIZE_ SZ_128M
-+/*
-+#if CONFIG_PM9G45_DEDICATED_VRAM
-+#define CONFIG_DRAM_SIZE SZ_64M - CONFIG_VRAM_SIZE
-+#define CONFIG_VRAM_BASE AT91_CHIPSELECT_6 + CONFIG_DRAM_SIZE
-+*/
- #else
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
- #endif
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch
deleted file mode 100644
index 6de675e..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From 7abad9133c1bf66732a339126003f191926a202c Mon Sep 17 00:00:00 2001
-From: Asen Dimov <dimov at ronetix.at>
-Date: Fri, 27 Aug 2010 13:46:28 +0300
-Subject: [PATCH] add pm9g45 board version 1.2, and adjust memory selection
-
-
-Signed-off-by: Asen Dimov <dimov at ronetix.at>
----
- arch/arm/mach-at91/Kconfig | 36 ++++++++++++++++++++++---
- arch/arm/mach-at91/board-pm9g45.c | 4 +--
- arch/arm/mach-at91/include/mach/at91sam9g45.h | 15 +++++++---
- 3 files changed, 43 insertions(+), 12 deletions(-)
-
-diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
-index bebad5b..25e6c6b 100644
---- a/arch/arm/mach-at91/Kconfig
-+++ b/arch/arm/mach-at91/Kconfig
-@@ -414,8 +414,30 @@ config MACH_PM9G45
- Select this if you are using Ronetix's PM9G45 board.
- <http://ronetix.at/starter_kit_9g45.html>
- choice
-- prompt "System RAM base address"
-+ prompt "PM9G45 board version"
- depends on MACH_PM9G45
-+ default MACH_PM9G45_V1_2
-+ help
-+ The version is writted out on the board.
-+
-+config MACH_PM9G45_V1_1
-+ bool "v1.1"
-+ depends on MACH_PM9G45
-+ help
-+ Has two RAM memories on CS1 and CS6.
-+
-+config MACH_PM9G45_V1_2
-+ bool "v1.2"
-+ depends on MACH_PM9G45
-+ select AUTO_VRAM_SIZE
-+ help
-+ Has one RAM memory on CS6.
-+
-+endchoice
-+
-+choice
-+ prompt "System RAM base address"
-+ depends on (MACH_PM9G45 && MACH_PM9G45_V1_1)
- help
- AT91SAM9G45 has two DDR2 controlers, one CS1 on 0x20000000
- and CS6 on 0x70000000 memmory addresses. You can choose
-@@ -423,21 +445,27 @@ choice
-
- config PM9G45_SYSTEM_RAM_CS1
- bool "System RAM: CS1 on 0x20000000 with 128MB"
-- depends on MACH_PM9G45
- help
- CS1 will be used for system ram and CS6 for video memory.
-
- config PM9G45_SYSTEM_RAM_CS6
- bool "System RAM: CS6 on 0x70000000"
-- depends on MACH_PM9G45
- help
- CS6 will be used for system ram and for video ram.
-
- endchoice
-
-+config AUTO_VRAM_SIZE
-+ bool "Reserve video memory automatic"
-+ depends on PM9G45_SYSTEM_RAM_CS6
-+ default n if PM9G45_SYSTEM_RAM_CS1
-+ help
-+ The automatic reservasion is based on the screen resolution
-+ and bits per pixel. Manualy reserver memory VRAM_SIZE for video.
-+
- config VRAM_SIZE
- prompt "Video RAM size"
-- depends on (MACH_PM9G45 && PM9G45_SYSTEM_RAM_CS6)
-+ depends on (MACH_PM9G45_V1_1 && PM9G45_SYSTEM_RAM_CS6 && AUTO_VRAM_SIZE=n)
- hex
- help
- Determine the size of ram for video. It will be located at the end of CS6.
-diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
-index fa142cf..2671445 100644
---- a/arch/arm/mach-at91/board-pm9g45.c
-+++ b/arch/arm/mach-at91/board-pm9g45.c
-@@ -270,7 +270,7 @@ static struct resource lcdc_resources[] = {
- .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
--#if CONFIG_PM9G45_DEDICATED_VRAM
-+#ifndef CONFIG_AUTO_VRAM_SIZE
- /*
- * atmel_lcdfb_probe() checks if record 1 is IORESOURCE_MEM
- * if not then allocates spave in system ram
-@@ -280,8 +280,6 @@ static struct resource lcdc_resources[] = {
- .end = CONFIG_VRAM_BASE + CONFIG_VRAM_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
--#endif
--#if CONFIG_PM9G45_DEDICATED_VRAM
- [2] = {
- #else
- [1] = {
-diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-index 826c764..446e6d9 100644
---- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
-+++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
-@@ -136,18 +136,23 @@
- */
- #if defined(CONFIG_MACH_AT91SAM9G45EKES)
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
--#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
-+#elif defined(CONFIG_MACH_PM9G45_V1_1) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS1)
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_1
- #define CONFIG_DRAM_SIZE SZ_128M
- #define CONFIG_VRAM_BASE AT91_CHIPSELECT_6
- #define CONFIG_VRAM_SIZE SZ_64M
--#elif defined(CONFIG_MACH_PM9G45) && defined(CONFIG_PM9G45_SYSTEM_RAM_CS6)
-+#elif defined(CONFIG_MACH_PM9G45_V1_1) && \
-+ defined(CONFIG_PM9G45_SYSTEM_RAM_CS6) && \
-+ defined(CONFIG_AUTO_VRAM_SIZE)
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
-+#elif defined(CONFIG_MACH_PM9G45_V1_1) && \
-+ defined(CONFIG_PM9G45_SYSTEM_RAM_CS6) && \
-+ CONFIG_AUTO_VRAM_SIZE == y
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
--/*
--#if CONFIG_PM9G45_DEDICATED_VRAM
- #define CONFIG_DRAM_SIZE SZ_64M - CONFIG_VRAM_SIZE
- #define CONFIG_VRAM_BASE AT91_CHIPSELECT_6 + CONFIG_DRAM_SIZE
--*/
-+#elif defined(CONFIG_MACH_PM9G45_V1_2)
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
- #else
- #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
- #endif
---
-1.5.5.6
-
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-enable-USB-Device-with-On-the-go-ability.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-enable-USB-Device-with-On-the-go-ability.patch
new file mode 100644
index 0000000..2a6efcd
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0011-enable-USB-Device-with-On-the-go-ability.patch
@@ -0,0 +1,44 @@
+From 5d368d914bce79214f0ce859667aa0a4b83d6695 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 19 Oct 2010 17:40:29 +0300
+Subject: [[PATCH 11/22] enable USB Device with On-the-go ability
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index b368d66..8a0135b 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -52,6 +52,8 @@
+ #include <mach/at91sam9_smc.h>
+ #include <mach/at91_shdwc.h>
+
++#include <linux/usb/gpio_vbus.h>
++
+ #include "sam9_smc.h"
+ #include "generic.h"
+
+@@ -90,6 +92,7 @@ static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
+ */
+ static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
+ .vbus_pin = AT91_PIN_PD1,
++ /*.pullup_pin = 0,*/ /* pull-up driven by UDC */
+ };
+
+ /*
+@@ -844,7 +847,7 @@ static void __init pm9g45_board_init(void)
+ at91_add_device_usbh_ohci(&pm9g45_usbh_hs_data);
+ at91_add_device_usbh_ehci(&pm9g45_usbh_hs_data);
+ /* USB HS Device */
+- //at91_add_device_usba(&pm9g45_usba_udc_data);
++ at91_add_device_usba(&pm9g45_usba_udc_data);
+ /* SPI */
+ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
+ /* Touchscreen */
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0012-one-more-update-of-mach-types.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0012-one-more-update-of-mach-types.patch
new file mode 100644
index 0000000..597c153
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0012-one-more-update-of-mach-types.patch
@@ -0,0 +1,907 @@
+From 4c9ef45d169ae62208895e6512cd38300a58dbb4 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 16 Nov 2010 13:48:44 +0200
+Subject: [[PATCH 12/22] one more update of mach-types
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/tools/mach-types | 786 ++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 772 insertions(+), 14 deletions(-)
+
+diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
+index 2ca61ca..4522ae1 100644
+--- a/arch/arm/tools/mach-types
++++ b/arch/arm/tools/mach-types
+@@ -12,7 +12,7 @@
+ #
+ # http://www.arm.linux.org.uk/developer/machines/?action=new
+ #
+-# Last update: Sat Sep 12 12:00:16 2009
++# Last update: Fri Nov 12 10:05:30 2010
+ #
+ # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
+ #
+@@ -928,7 +928,7 @@ palmt5 MACH_PALMT5 PALMT5 917
+ palmtc MACH_PALMTC PALMTC 918
+ omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
+ mxc30030evb MACH_MXC30030EVB MXC30030EVB 920
+-rea_2d MACH_REA_2D REA_2D 921
++rea_cpu2 MACH_REA_2D REA_2D 921
+ eti3e524 MACH_TI3E524 TI3E524 922
+ ateb9200 MACH_ATEB9200 ATEB9200 923
+ auckland MACH_AUCKLAND AUCKLAND 924
+@@ -1319,7 +1319,7 @@ mistral MACH_MISTRAL MISTRAL 1315
+ msm MACH_MSM MSM 1316
+ ct5910 MACH_CT5910 CT5910 1317
+ ct5912 MACH_CT5912 CT5912 1318
+-hynet_ine MACH_HYNET_INE HYNET_INE 1319
++argonst_foundation MACH_HYNET_INE HYNET_INE 1319
+ hynet_app MACH_HYNET_APP HYNET_APP 1320
+ msm7200 MACH_MSM7200 MSM7200 1321
+ msm7600 MACH_MSM7600 MSM7600 1322
+@@ -1638,7 +1638,7 @@ mx35evb MACH_MX35EVB MX35EVB 1643
+ aml_m8050 MACH_AML_M8050 AML_M8050 1644
+ mx35_3ds MACH_MX35_3DS MX35_3DS 1645
+ mars MACH_MARS MARS 1646
+-ntosd_644xa MACH_NTOSD_644XA NTOSD_644XA 1647
++neuros_osd2 MACH_NEUROS_OSD2 NEUROS_OSD2 1647
+ badger MACH_BADGER BADGER 1648
+ trizeps4wl MACH_TRIZEPS4WL TRIZEPS4WL 1649
+ trizeps5 MACH_TRIZEPS5 TRIZEPS5 1650
+@@ -1654,7 +1654,7 @@ vf10xx MACH_VF10XX VF10XX 1659
+ zoran43xx MACH_ZORAN43XX ZORAN43XX 1660
+ sonix926 MACH_SONIX926 SONIX926 1661
+ celestialsemi MACH_CELESTIALSEMI CELESTIALSEMI 1662
+-cc9m2443 MACH_CC9M2443 CC9M2443 1663
++cc9m2443js MACH_CC9M2443JS CC9M2443JS 1663
+ tw5334 MACH_TW5334 TW5334 1664
+ omap_htcartemis MACH_HTCARTEMIS HTCARTEMIS 1665
+ nal_hlite MACH_NAL_HLITE NAL_HLITE 1666
+@@ -1776,7 +1776,8 @@ cybook3 MACH_CYBOOK3 CYBOOK3 1784
+ wdg002 MACH_WDG002 WDG002 1785
+ sg560adsl MACH_SG560ADSL SG560ADSL 1786
+ nextio_n2800_ica MACH_NEXTIO_N2800_ICA NEXTIO_N2800_ICA 1787
+-marvell_newdb MACH_MARVELL_NEWDB MARVELL_NEWDB 1789
++dove_db MACH_DOVE_DB DOVE_DB 1788
++dove_avng MACH_MARVELL_NEWDB MARVELL_NEWDB 1789
+ vandihud MACH_VANDIHUD VANDIHUD 1790
+ magx_e8 MACH_MAGX_E8 MAGX_E8 1791
+ magx_z6 MACH_MAGX_Z6 MAGX_Z6 1792
+@@ -1802,7 +1803,7 @@ ccw9p9215js MACH_CCW9P9215JS CCW9P9215JS 1811
+ rd88f5181l_ge MACH_RD88F5181L_GE RD88F5181L_GE 1812
+ sifmain MACH_SIFMAIN SIFMAIN 1813
+ sam9_l9261 MACH_SAM9_L9261 SAM9_L9261 1814
+-cc9m2443js MACH_CC9M2443JS CC9M2443JS 1815
++cc9m2443 MACH_CC9M2443 CC9M2443 1815
+ xaria300 MACH_XARIA300 XARIA300 1816
+ it9200 MACH_IT9200 IT9200 1817
+ rd88f5181l_fxo MACH_RD88F5181L_FXO RD88F5181L_FXO 1818
+@@ -1876,7 +1877,7 @@ ued MACH_UED UED 1885
+ esiblade MACH_ESIBLADE ESIBLADE 1886
+ eye02 MACH_EYE02 EYE02 1887
+ imx27kbd MACH_IMX27KBD IMX27KBD 1888
+-sst61vc010_fpga MACH_SST61VC010_FPGA SST61VC010_FPGA 1889
++p87_fpga MACH_SST61VC010_FPGA SST61VC010_FPGA 1889
+ kixvp435 MACH_KIXVP435 KIXVP435 1890
+ kixnp435 MACH_KIXNP435 KIXNP435 1891
+ africa MACH_AFRICA AFRICA 1892
+@@ -1993,7 +1994,7 @@ spark MACH_SPARK SPARK 2002
+ benzina MACH_BENZINA BENZINA 2003
+ blaze MACH_BLAZE BLAZE 2004
+ linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
+-htckovsky MACH_HTCVENUS HTCVENUS 2006
++htckovsky MACH_HTCKOVSKY HTCKOVSKY 2006
+ sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
+ hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
+ sapphira MACH_SAPPHIRA SAPPHIRA 2009
+@@ -2256,7 +2257,7 @@ oratisalog MACH_ORATISALOG ORATISALOG 2268
+ oratismadi MACH_ORATISMADI ORATISMADI 2269
+ oratisot16 MACH_ORATISOT16 ORATISOT16 2270
+ oratisdesk MACH_ORATISDESK ORATISDESK 2271
+-v2_ca9 MACH_V2P_CA9 V2P_CA9 2272
++vexpress MACH_VEXPRESS VEXPRESS 2272
+ sintexo MACH_SINTEXO SINTEXO 2273
+ cm3389 MACH_CM3389 CM3389 2274
+ omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275
+@@ -2307,7 +2308,7 @@ ecac2378 MACH_ECAC2378 ECAC2378 2319
+ tazkiosk MACH_TAZKIOSK TAZKIOSK 2320
+ whiterabbit_mch MACH_WHITERABBIT_MCH WHITERABBIT_MCH 2321
+ sbox9263 MACH_SBOX9263 SBOX9263 2322
+-oreo MACH_OREO OREO 2323
++oreo_camera MACH_OREO OREO 2323
+ smdk6442 MACH_SMDK6442 SMDK6442 2324
+ openrd_base MACH_OPENRD_BASE OPENRD_BASE 2325
+ incredible MACH_INCREDIBLE INCREDIBLE 2326
+@@ -2320,7 +2321,7 @@ mx31txtr MACH_MX31TXTR MX31TXTR 2332
+ u380 MACH_U380 U380 2333
+ oamp3_hualu MACH_HUALU_BOARD HUALU_BOARD 2334
+ npcmx50 MACH_NPCMX50 NPCMX50 2335
+-mx51_lange51 MACH_MX51_LANGE51 MX51_LANGE51 2336
++mx51_efikamx MACH_MX51_EFIKAMX MX51_EFIKAMX 2336
+ mx51_lange52 MACH_MX51_LANGE52 MX51_LANGE52 2337
+ riom MACH_RIOM RIOM 2338
+ comcas MACH_COMCAS COMCAS 2339
+@@ -2354,7 +2355,7 @@ at91sam9263cs MACH_AT91SAM9263CS AT91SAM9263CS 2366
+ csb732 MACH_CSB732 CSB732 2367
+ u8500 MACH_U8500 U8500 2368
+ huqiu MACH_HUQIU HUQIU 2369
+-mx51_kunlun MACH_MX51_KUNLUN MX51_KUNLUN 2370
++mx51_efikasb MACH_MX51_EFIKASB MX51_EFIKASB 2370
+ pmt1g MACH_PMT1G PMT1G 2371
+ htcelf MACH_HTCELF HTCELF 2372
+ armadillo420 MACH_ARMADILLO420 ARMADILLO420 2373
+@@ -2373,7 +2374,7 @@ sch_m490 MACH_SCH_M490 SCH_M490 2386
+ rbl01 MACH_RBL01 RBL01 2387
+ omnifi MACH_OMNIFI OMNIFI 2388
+ otavalo MACH_OTAVALO OTAVALO 2389
+-sienna MACH_SIENNA SIENNA 2390
++siena MACH_SIENNA SIENNA 2390
+ htc_excalibur_s620 MACH_HTC_EXCALIBUR_S620 HTC_EXCALIBUR_S620 2391
+ htc_opal MACH_HTC_OPAL HTC_OPAL 2392
+ touchbook MACH_TOUCHBOOK TOUCHBOOK 2393
+@@ -2409,4 +2410,761 @@ platypus MACH_PLATYPUS PLATYPUS 2422
+ pss2 MACH_PSS2 PSS2 2423
+ davinci_apm150 MACH_DAVINCI_APM150 DAVINCI_APM150 2424
+ str9100 MACH_STR9100 STR9100 2425
++net5big MACH_NET5BIG NET5BIG 2426
++seabed9263 MACH_SEABED9263 SEABED9263 2427
++mx51_m2id MACH_MX51_M2ID MX51_M2ID 2428
++octvocplus_eb MACH_OCTVOCPLUS_EB OCTVOCPLUS_EB 2429
++klk_firefox MACH_KLK_FIREFOX KLK_FIREFOX 2430
++klk_wirma_module MACH_KLK_WIRMA_MODULE KLK_WIRMA_MODULE 2431
++klk_wirma_mmi MACH_KLK_WIRMA_MMI KLK_WIRMA_MMI 2432
++supersonic MACH_SUPERSONIC SUPERSONIC 2433
++liberty MACH_LIBERTY LIBERTY 2434
++mh355 MACH_MH355 MH355 2435
++pc7802 MACH_PC7802 PC7802 2436
++gnet_sgc MACH_GNET_SGC GNET_SGC 2437
++einstein15 MACH_EINSTEIN15 EINSTEIN15 2438
++cmpd MACH_CMPD CMPD 2439
++davinci_hase1 MACH_DAVINCI_HASE1 DAVINCI_HASE1 2440
++lgeincitephone MACH_LGEINCITEPHONE LGEINCITEPHONE 2441
++ea313x MACH_EA313X EA313X 2442
++fwbd_39064 MACH_FWBD_39064 FWBD_39064 2443
++fwbd_390128 MACH_FWBD_390128 FWBD_390128 2444
++pelco_moe MACH_PELCO_MOE PELCO_MOE 2445
++minimix27 MACH_MINIMIX27 MINIMIX27 2446
++omap3_thunder MACH_OMAP3_THUNDER OMAP3_THUNDER 2447
++passionc MACH_PASSIONC PASSIONC 2448
++mx27amata MACH_MX27AMATA MX27AMATA 2449
++bgat1 MACH_BGAT1 BGAT1 2450
++buzz MACH_BUZZ BUZZ 2451
++mb9g20 MACH_MB9G20 MB9G20 2452
++yushan MACH_YUSHAN YUSHAN 2453
++lizard MACH_LIZARD LIZARD 2454
++omap3polycom MACH_OMAP3POLYCOM OMAP3POLYCOM 2455
++smdkv210 MACH_SMDKV210 SMDKV210 2456
++bravo MACH_BRAVO BRAVO 2457
++siogentoo1 MACH_SIOGENTOO1 SIOGENTOO1 2458
++siogentoo2 MACH_SIOGENTOO2 SIOGENTOO2 2459
++sm3k MACH_SM3K SM3K 2460
++acer_tempo_f900 MACH_ACER_TEMPO_F900 ACER_TEMPO_F900 2461
++p87_dev MACH_SST61VC010_DEV SST61VC010_DEV 2462
++glittertind MACH_GLITTERTIND GLITTERTIND 2463
++omap_zoom3 MACH_OMAP_ZOOM3 OMAP_ZOOM3 2464
++omap_3630sdp MACH_OMAP_3630SDP OMAP_3630SDP 2465
++cybook2440 MACH_CYBOOK2440 CYBOOK2440 2466
++torino_s MACH_TORINO_S TORINO_S 2467
++havana MACH_HAVANA HAVANA 2468
++beaumont_11 MACH_BEAUMONT_11 BEAUMONT_11 2469
++vanguard MACH_VANGUARD VANGUARD 2470
++s5pc110_draco MACH_S5PC110_DRACO S5PC110_DRACO 2471
++cartesio_two MACH_CARTESIO_TWO CARTESIO_TWO 2472
++aster MACH_ASTER ASTER 2473
++voguesv210 MACH_VOGUESV210 VOGUESV210 2474
++acm500x MACH_ACM500X ACM500X 2475
++km9260 MACH_KM9260 KM9260 2476
++nideflexg1 MACH_NIDEFLEXG1 NIDEFLEXG1 2477
++ctera_plug_io MACH_CTERA_PLUG_IO CTERA_PLUG_IO 2478
++smartq7 MACH_SMARTQ7 SMARTQ7 2479
++at91sam9g10ek2 MACH_AT91SAM9G10EK2 AT91SAM9G10EK2 2480
++asusp527 MACH_ASUSP527 ASUSP527 2481
++at91sam9g20mpm2 MACH_AT91SAM9G20MPM2 AT91SAM9G20MPM2 2482
++topasa900 MACH_TOPASA900 TOPASA900 2483
++electrum_100 MACH_ELECTRUM_100 ELECTRUM_100 2484
++mx51grb MACH_MX51GRB MX51GRB 2485
++xea300 MACH_XEA300 XEA300 2486
++htcstartrek MACH_HTCSTARTREK HTCSTARTREK 2487
++lima MACH_LIMA LIMA 2488
++csb740 MACH_CSB740 CSB740 2489
++usb_s8815 MACH_USB_S8815 USB_S8815 2490
++watson_efm_plugin MACH_WATSON_EFM_PLUGIN WATSON_EFM_PLUGIN 2491
++milkyway MACH_MILKYWAY MILKYWAY 2492
++g4evm MACH_G4EVM G4EVM 2493
++picomod6 MACH_PICOMOD6 PICOMOD6 2494
++omapl138_hawkboard MACH_OMAPL138_HAWKBOARD OMAPL138_HAWKBOARD 2495
++ip6000 MACH_IP6000 IP6000 2496
++ip6010 MACH_IP6010 IP6010 2497
++utm400 MACH_UTM400 UTM400 2498
++omap3_zybex MACH_OMAP3_ZYBEX OMAP3_ZYBEX 2499
++wireless_space MACH_WIRELESS_SPACE WIRELESS_SPACE 2500
++sx560 MACH_SX560 SX560 2501
++ts41x MACH_TS41X TS41X 2502
++elphel10373 MACH_ELPHEL10373 ELPHEL10373 2503
++rhobot MACH_RHOBOT RHOBOT 2504
++mx51_refresh MACH_MX51_REFRESH MX51_REFRESH 2505
++ls9260 MACH_LS9260 LS9260 2506
++shank MACH_SHANK SHANK 2507
++qsd8x50_st1 MACH_QSD8X50_ST1 QSD8X50_ST1 2508
+ at91sam9m10ekes MACH_AT91SAM9M10EKES AT91SAM9M10EKES 2509
++hiram MACH_HIRAM HIRAM 2510
++phy3250 MACH_PHY3250 PHY3250 2511
++ea3250 MACH_EA3250 EA3250 2512
++fdi3250 MACH_FDI3250 FDI3250 2513
++htcwhitestone MACH_WHITESTONE WHITESTONE 2514
++at91sam9263nit MACH_AT91SAM9263NIT AT91SAM9263NIT 2515
++ccmx51 MACH_CCMX51 CCMX51 2516
++ccmx51js MACH_CCMX51JS CCMX51JS 2517
++ccwmx51 MACH_CCWMX51 CCWMX51 2518
++ccwmx51js MACH_CCWMX51JS CCWMX51JS 2519
++mini6410 MACH_MINI6410 MINI6410 2520
++tiny6410 MACH_TINY6410 TINY6410 2521
++nano6410 MACH_NANO6410 NANO6410 2522
++at572d940hfnldb MACH_AT572D940HFNLDB AT572D940HFNLDB 2523
++htcleo MACH_HTCLEO HTCLEO 2524
++avp13 MACH_AVP13 AVP13 2525
++xxsvideod MACH_XXSVIDEOD XXSVIDEOD 2526
++vpnext MACH_VPNEXT VPNEXT 2527
++swarco_itc3 MACH_SWARCO_ITC3 SWARCO_ITC3 2528
++tx51 MACH_TX51 TX51 2529
++dolby_cat1021 MACH_DOLBY_CAT1021 DOLBY_CAT1021 2530
++mx28evk MACH_MX28EVK MX28EVK 2531
++phoenix260 MACH_PHOENIX260 PHOENIX260 2532
++uvaca_stork MACH_UVACA_STORK UVACA_STORK 2533
++smartq5 MACH_SMARTQ5 SMARTQ5 2534
++all3078 MACH_ALL3078 ALL3078 2535
++ctera_2bay_ds MACH_CTERA_2BAY_DS CTERA_2BAY_DS 2536
++siogentoo3 MACH_SIOGENTOO3 SIOGENTOO3 2537
++epb5000 MACH_EPB5000 EPB5000 2538
++hy9263 MACH_HY9263 HY9263 2539
++acer_tempo_m900 MACH_ACER_TEMPO_M900 ACER_TEMPO_M900 2540
++acer_tempo_dx650 MACH_ACER_TEMPO_DX900 ACER_TEMPO_DX900 2541
++acer_tempo_x960 MACH_ACER_TEMPO_X960 ACER_TEMPO_X960 2542
++acer_eten_v900 MACH_ACER_ETEN_V900 ACER_ETEN_V900 2543
++acer_eten_x900 MACH_ACER_ETEN_X900 ACER_ETEN_X900 2544
++bonnell MACH_BONNELL BONNELL 2545
++oht_mx27 MACH_OHT_MX27 OHT_MX27 2546
++htcquartz MACH_HTCQUARTZ HTCQUARTZ 2547
++davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
++c3ax03 MACH_C3AX03 C3AX03 2549
++mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
++esyx MACH_ESYX ESYX 2551
++dove_db2 MACH_DOVE_DB2 DOVE_DB2 2552
++bulldog MACH_BULLDOG BULLDOG 2553
++derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554
++bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555
++bcmring_evm MACH_BCMRING_EVM BCMRING_EVM 2556
++bcmring_evm_jazz MACH_BCMRING_EVM_JAZZ BCMRING_EVM_JAZZ 2557
++bcmring_sp MACH_BCMRING_SP BCMRING_SP 2558
++bcmring_sv MACH_BCMRING_SV BCMRING_SV 2559
++bcmring_sv_jazz MACH_BCMRING_SV_JAZZ BCMRING_SV_JAZZ 2560
++bcmring_tablet MACH_BCMRING_TABLET BCMRING_TABLET 2561
++bcmring_vp MACH_BCMRING_VP BCMRING_VP 2562
++bcmring_evm_seikor MACH_BCMRING_EVM_SEIKOR BCMRING_EVM_SEIKOR 2563
++bcmring_sp_wqvga MACH_BCMRING_SP_WQVGA BCMRING_SP_WQVGA 2564
++bcmring_custom MACH_BCMRING_CUSTOM BCMRING_CUSTOM 2565
++acer_s200 MACH_ACER_S200 ACER_S200 2566
++bt270 MACH_BT270 BT270 2567
++iseo MACH_ISEO ISEO 2568
++cezanne MACH_CEZANNE CEZANNE 2569
++lucca MACH_LUCCA LUCCA 2570
++supersmart MACH_SUPERSMART SUPERSMART 2571
++arm11_board MACH_CS_MISANO CS_MISANO 2572
++magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573
++emxx MACH_EMXX EMXX 2574
++outlaw MACH_OUTLAW OUTLAW 2575
++riot_bei2 MACH_RIOT_BEI2 RIOT_BEI2 2576
++riot_gx2 MACH_RIOT_VOX RIOT_VOX 2577
++riot_x37 MACH_RIOT_X37 RIOT_X37 2578
++mega25mx MACH_MEGA25MX MEGA25MX 2579
++benzina2 MACH_BENZINA2 BENZINA2 2580
++ignite MACH_IGNITE IGNITE 2581
++foggia MACH_FOGGIA FOGGIA 2582
++arezzo MACH_AREZZO AREZZO 2583
++leica_skywalker MACH_LEICA_SKYWALKER LEICA_SKYWALKER 2584
++jacinto2_jamr MACH_JACINTO2_JAMR JACINTO2_JAMR 2585
++gts_nova MACH_GTS_NOVA GTS_NOVA 2586
++p3600 MACH_P3600 P3600 2587
++dlt2 MACH_DLT2 DLT2 2588
++df3120 MACH_DF3120 DF3120 2589
++ecucore_9g20 MACH_ECUCORE_9G20 ECUCORE_9G20 2590
++nautel_lpc3240 MACH_NAUTEL_LPC3240 NAUTEL_LPC3240 2591
++glacier MACH_GLACIER GLACIER 2592
++phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593
++omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594
++pca101 MACH_PCA101 PCA101 2595
++buzzc MACH_BUZZC BUZZC 2596
++sasie2 MACH_SASIE2 SASIE2 2597
++davinci_dm6467_cio MACH_DAVINCI_CIO DAVINCI_CIO 2598
++smartmeter_dl MACH_SMARTMETER_DL SMARTMETER_DL 2599
++wzl6410 MACH_WZL6410 WZL6410 2600
++wzl6410m MACH_WZL6410M WZL6410M 2601
++wzl6410f MACH_WZL6410F WZL6410F 2602
++wzl6410i MACH_WZL6410I WZL6410I 2603
++spacecom1 MACH_SPACECOM1 SPACECOM1 2604
++pingu920 MACH_PINGU920 PINGU920 2605
++bravoc MACH_BRAVOC BRAVOC 2606
++mydev MACH_CYBO2440 CYBO2440 2607
++vdssw MACH_VDSSW VDSSW 2608
++romulus MACH_ROMULUS ROMULUS 2609
++omap_magic MACH_OMAP_MAGIC OMAP_MAGIC 2610
++eltd100 MACH_ELTD100 ELTD100 2611
++capc7117 MACH_CAPC7117 CAPC7117 2612
++swan MACH_SWAN SWAN 2613
++veu MACH_VEU VEU 2614
++rm2 MACH_RM2 RM2 2615
++tt2100 MACH_TT2100 TT2100 2616
++venice MACH_VENICE VENICE 2617
++pc7323 MACH_PC7323 PC7323 2618
++masp MACH_MASP MASP 2619
++fujitsu_tvstbsoc0 MACH_FUJITSU_TVSTBSOC FUJITSU_TVSTBSOC 2620
++fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621
++lexikon MACH_LEXIKON LEXIKON 2622
++mini2440v2 MACH_MINI2440V2 MINI2440V2 2623
++icontrol MACH_ICONTROL ICONTROL 2624
++gplugd MACH_SHEEVAD SHEEVAD 2625
++qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626
++qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627
++bee MACH_BEE BEE 2628
++mx23evk MACH_MX23EVK MX23EVK 2629
++ap4evb MACH_AP4EVB AP4EVB 2630
++stockholm MACH_STOCKHOLM STOCKHOLM 2631
++lpc_h3131 MACH_LPC_H3131 LPC_H3131 2632
++stingray MACH_STINGRAY STINGRAY 2633
++kraken MACH_KRAKEN KRAKEN 2634
++gw2388 MACH_GW2388 GW2388 2635
++jadecpu MACH_JADECPU JADECPU 2636
++carlisle MACH_CARLISLE CARLISLE 2637
++lux_sf9 MACH_LUX_SF9 LUX_SF9 2638
++nemid_tb MACH_NEMID_TB NEMID_TB 2639
++terrier MACH_TERRIER TERRIER 2640
++turbot MACH_TURBOT TURBOT 2641
++sanddab MACH_SANDDAB SANDDAB 2642
++mx35_cicada MACH_MX35_CICADA MX35_CICADA 2643
++ghi2703d MACH_GHI2703D GHI2703D 2644
++lux_sfx9 MACH_LUX_SFX9 LUX_SFX9 2645
++lux_sf9g MACH_LUX_SF9G LUX_SF9G 2646
++lux_edk9 MACH_LUX_EDK9 LUX_EDK9 2647
++hw90240 MACH_HW90240 HW90240 2648
++dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649
++mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
++scat110 MACH_SCAT110 SCAT110 2651
++acer_a1 MACH_ACER_A1 ACER_A1 2652
++cmcontrol MACH_CMCONTROL CMCONTROL 2653
++pelco_lamar MACH_PELCO_LAMAR PELCO_LAMAR 2654
++rfp43 MACH_RFP43 RFP43 2655
++sk86r0301 MACH_SK86R0301 SK86R0301 2656
++ctpxa MACH_CTPXA CTPXA 2657
++epb_arm9_a MACH_EPB_ARM9_A EPB_ARM9_A 2658
++guruplug MACH_GURUPLUG GURUPLUG 2659
++spear310 MACH_SPEAR310 SPEAR310 2660
++spear320 MACH_SPEAR320 SPEAR320 2661
++robotx MACH_ROBOTX ROBOTX 2662
++lsxhl MACH_LSXHL LSXHL 2663
++smartlite MACH_SMARTLITE SMARTLITE 2664
++cws2 MACH_CWS2 CWS2 2665
++m619 MACH_M619 M619 2666
++smartview MACH_SMARTVIEW SMARTVIEW 2667
++lsa_salsa MACH_LSA_SALSA LSA_SALSA 2668
++kizbox MACH_KIZBOX KIZBOX 2669
++htccharmer MACH_HTCCHARMER HTCCHARMER 2670
++guf_neso_lt MACH_GUF_NESO_LT GUF_NESO_LT 2671
++pm9g45 MACH_PM9G45 PM9G45 2672
++htcpanther MACH_HTCPANTHER HTCPANTHER 2673
++htcpanther_cdma MACH_HTCPANTHER_CDMA HTCPANTHER_CDMA 2674
++reb01 MACH_REB01 REB01 2675
++aquila MACH_AQUILA AQUILA 2676
++spark_sls_hw2 MACH_SPARK_SLS_HW2 SPARK_SLS_HW2 2677
++sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678
++msm7x30_surf MACH_MSM7X30_SURF MSM7X30_SURF 2679
++micro2440 MACH_MICRO2440 MICRO2440 2680
++am2440 MACH_AM2440 AM2440 2681
++tq2440 MACH_TQ2440 TQ2440 2682
++lpc2478oem MACH_LPC2478OEM LPC2478OEM 2683
++ak880x MACH_AK880X AK880X 2684
++cobra3530 MACH_COBRA3530 COBRA3530 2685
++pmppb MACH_PMPPB PMPPB 2686
++u6715 MACH_U6715 U6715 2687
++axar1500_sender MACH_AXAR1500_SENDER AXAR1500_SENDER 2688
++g30_dvb MACH_G30_DVB G30_DVB 2689
++vc088x MACH_VC088X VC088X 2690
++mioa702 MACH_MIOA702 MIOA702 2691
++hpmin MACH_HPMIN HPMIN 2692
++ak880xak MACH_AK880XAK AK880XAK 2693
++arm926tomap850 MACH_ARM926TOMAP850 ARM926TOMAP850 2694
++lkevm MACH_LKEVM LKEVM 2695
++mw6410 MACH_MW6410 MW6410 2696
++terastation_wxl MACH_TERASTATION_WXL TERASTATION_WXL 2697
++cpu8000e MACH_CPU8000E CPU8000E 2698
++catania_s MACH_CATANIA CATANIA 2699
++tokyo MACH_TOKYO TOKYO 2700
++msm7201a_surf MACH_MSM7201A_SURF MSM7201A_SURF 2701
++msm7201a_ffa MACH_MSM7201A_FFA MSM7201A_FFA 2702
++msm7x25_surf MACH_MSM7X25_SURF MSM7X25_SURF 2703
++msm7x25_ffa MACH_MSM7X25_FFA MSM7X25_FFA 2704
++msm7x27_surf MACH_MSM7X27_SURF MSM7X27_SURF 2705
++msm7x27_ffa MACH_MSM7X27_FFA MSM7X27_FFA 2706
++msm7x30_ffa MACH_MSM7X30_FFA MSM7X30_FFA 2707
++qsd8x50_surf MACH_QSD8X50_SURF QSD8X50_SURF 2708
++qsd8x50_comet MACH_QSD8X50_COMET QSD8X50_COMET 2709
++qsd8x50_ffa MACH_QSD8X50_FFA QSD8X50_FFA 2710
++qsd8x50a_surf MACH_QSD8X50A_SURF QSD8X50A_SURF 2711
++qsd8x50a_ffa MACH_QSD8X50A_FFA QSD8X50A_FFA 2712
++adx_xgcp10 MACH_ADX_XGCP10 ADX_XGCP10 2713
++mcgwumts2a MACH_MCGWUMTS2A MCGWUMTS2A 2714
++mobikt MACH_MOBIKT MOBIKT 2715
++mx53_evk MACH_MX53_EVK MX53_EVK 2716
++igep0030 MACH_IGEP0030 IGEP0030 2717
++axell_h40_h50_ctrl MACH_AXELL_H40_H50_CTRL AXELL_H40_H50_CTRL 2718
++dtcommod MACH_DTCOMMOD DTCOMMOD 2719
++gould MACH_GOULD GOULD 2720
++siberia MACH_SIBERIA SIBERIA 2721
++sbc3530 MACH_SBC3530 SBC3530 2722
++qarm MACH_QARM QARM 2723
++mips MACH_MIPS MIPS 2724
++mx27grb MACH_MX27GRB MX27GRB 2725
++sbc8100 MACH_SBC8100 SBC8100 2726
++saarb MACH_SAARB SAARB 2727
++omap3mini MACH_OMAP3MINI OMAP3MINI 2728
++cnmbook7se MACH_CNMBOOK7SE CNMBOOK7SE 2729
++catan MACH_CATAN CATAN 2730
++harmony MACH_HARMONY HARMONY 2731
++tonga MACH_TONGA TONGA 2732
++cybook_orizon MACH_CYBOOK_ORIZON CYBOOK_ORIZON 2733
++htcrhodiumcdma MACH_HTCRHODIUMCDMA HTCRHODIUMCDMA 2734
++epc_g45 MACH_EPC_G45 EPC_G45 2735
++epc_lpc3250 MACH_EPC_LPC3250 EPC_LPC3250 2736
++mxc91341evb MACH_MXC91341EVB MXC91341EVB 2737
++rtw1000 MACH_RTW1000 RTW1000 2738
++bobcat MACH_BOBCAT BOBCAT 2739
++trizeps6 MACH_TRIZEPS6 TRIZEPS6 2740
++msm7x30_fluid MACH_MSM7X30_FLUID MSM7X30_FLUID 2741
++nedap9263 MACH_NEDAP9263 NEDAP9263 2742
++netgear_ms2110 MACH_NETGEAR_MS2110 NETGEAR_MS2110 2743
++bmx MACH_BMX BMX 2744
++netstream MACH_NETSTREAM NETSTREAM 2745
++vpnext_rcu MACH_VPNEXT_RCU VPNEXT_RCU 2746
++vpnext_mpu MACH_VPNEXT_MPU VPNEXT_MPU 2747
++bcmring_tablet_v1 MACH_BCMRING_TABLET_V1 BCMRING_TABLET_V1 2748
++sgarm10 MACH_SGARM10 SGARM10 2749
++cm_t3517 MACH_CM_T3517 CM_T3517 2750
++omap3_cps MACH_OMAP3_CPS OMAP3_CPS 2751
++axar1500_receiver MACH_AXAR1500_RECEIVER AXAR1500_RECEIVER 2752
++wbd222 MACH_WBD222 WBD222 2753
++mt65xx MACH_MT65XX MT65XX 2754
++msm8x60_surf MACH_MSM8X60_SURF MSM8X60_SURF 2755
++msm8x60_sim MACH_MSM8X60_SIM MSM8X60_SIM 2756
++vmc300 MACH_VMC300 VMC300 2757
++tcc8000_sdk MACH_TCC8000_SDK TCC8000_SDK 2758
++nanos MACH_NANOS NANOS 2759
++stamp9g10 MACH_STAMP9G10 STAMP9G10 2760
++stamp9g45 MACH_STAMP9G45 STAMP9G45 2761
++h6053 MACH_H6053 H6053 2762
++smint01 MACH_SMINT01 SMINT01 2763
++prtlvt2 MACH_PRTLVT2 PRTLVT2 2764
++ap420 MACH_AP420 AP420 2765
++htcclio MACH_HTCSHIFT HTCSHIFT 2766
++davinci_dm365_fc MACH_DAVINCI_DM365_FC DAVINCI_DM365_FC 2767
++msm8x55_surf MACH_MSM8X55_SURF MSM8X55_SURF 2768
++msm8x55_ffa MACH_MSM8X55_FFA MSM8X55_FFA 2769
++esl_vamana MACH_ESL_VAMANA ESL_VAMANA 2770
++sbc35 MACH_SBC35 SBC35 2771
++mpx6446 MACH_MPX6446 MPX6446 2772
++oreo_controller MACH_OREO_CONTROLLER OREO_CONTROLLER 2773
++kopin_models MACH_KOPIN_MODELS KOPIN_MODELS 2774
++ttc_vision2 MACH_TTC_VISION2 TTC_VISION2 2775
++cns3420vb MACH_CNS3420VB CNS3420VB 2776
++lpc_evo MACH_LPC2 LPC2 2777
++olympus MACH_OLYMPUS OLYMPUS 2778
++vortex MACH_VORTEX VORTEX 2779
++s5pc200 MACH_S5PC200 S5PC200 2780
++ecucore_9263 MACH_ECUCORE_9263 ECUCORE_9263 2781
++smdkc200 MACH_SMDKC200 SMDKC200 2782
++emsiso_sx27 MACH_EMSISO_SX27 EMSISO_SX27 2783
++apx_som9g45_ek MACH_APX_SOM9G45_EK APX_SOM9G45_EK 2784
++songshan MACH_SONGSHAN SONGSHAN 2785
++tianshan MACH_TIANSHAN TIANSHAN 2786
++vpx500 MACH_VPX500 VPX500 2787
++am3517sam MACH_AM3517SAM AM3517SAM 2788
++skat91_sim508 MACH_SKAT91_SIM508 SKAT91_SIM508 2789
++skat91_s3e MACH_SKAT91_S3E SKAT91_S3E 2790
++omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791
++df7220 MACH_DF7220 DF7220 2792
++nemini MACH_NEMINI NEMINI 2793
++t8200 MACH_T8200 T8200 2794
++apf51 MACH_APF51 APF51 2795
++dr_rc_unit MACH_DR_RC_UNIT DR_RC_UNIT 2796
++bordeaux MACH_BORDEAUX BORDEAUX 2797
++catania_b MACH_CATANIA_B CATANIA_B 2798
++mx51_ocean MACH_MX51_OCEAN MX51_OCEAN 2799
++ti8168evm MACH_TI8168EVM TI8168EVM 2800
++neocoreomap MACH_NEOCOREOMAP NEOCOREOMAP 2801
++withings_wbp MACH_WITHINGS_WBP WITHINGS_WBP 2802
++dbps MACH_DBPS DBPS 2803
++at91sam9261 MACH_SBC9261 SBC9261 2804
++pcbfp0001 MACH_PCBFP0001 PCBFP0001 2805
++speedy MACH_SPEEDY SPEEDY 2806
++chrysaor MACH_CHRYSAOR CHRYSAOR 2807
++tango MACH_TANGO TANGO 2808
++synology_dsx11 MACH_SYNOLOGY_DSX11 SYNOLOGY_DSX11 2809
++hanlin_v3ext MACH_HANLIN_V3EXT HANLIN_V3EXT 2810
++hanlin_v5 MACH_HANLIN_V5 HANLIN_V5 2811
++hanlin_v3plus MACH_HANLIN_V3PLUS HANLIN_V3PLUS 2812
++iriver_story MACH_IRIVER_STORY IRIVER_STORY 2813
++irex_iliad MACH_IREX_ILIAD IREX_ILIAD 2814
++irex_dr1000 MACH_IREX_DR1000 IREX_DR1000 2815
++teton_bga MACH_TETON_BGA TETON_BGA 2816
++snapper9g45 MACH_SNAPPER9G45 SNAPPER9G45 2817
++tam3517 MACH_TAM3517 TAM3517 2818
++pdc100 MACH_PDC100 PDC100 2819
++eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25 EUKREA_CPUIMX25 2820
++eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35 EUKREA_CPUIMX35 2821
++eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822
++eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823
++p565 MACH_P565 P565 2824
++acer_a4 MACH_ACER_A4 ACER_A4 2825
++davinci_dm368_bip MACH_DAVINCI_DM368_BIP DAVINCI_DM368_BIP 2826
++eshare MACH_ESHARE ESHARE 2827
++omapl138_europa MACH_HW_OMAPL138_EUROPA HW_OMAPL138_EUROPA 2828
++wlbargn MACH_WLBARGN WLBARGN 2829
++bm170 MACH_BM170 BM170 2830
++netspace_mini_v2 MACH_NETSPACE_MINI_V2 NETSPACE_MINI_V2 2831
++netspace_plug_v2 MACH_NETSPACE_PLUG_V2 NETSPACE_PLUG_V2 2832
++siemens_l1 MACH_SIEMENS_L1 SIEMENS_L1 2833
++elv_lcu1 MACH_ELV_LCU1 ELV_LCU1 2834
++mcu1 MACH_MCU1 MCU1 2835
++omap3_tao3530 MACH_OMAP3_TAO3530 OMAP3_TAO3530 2836
++omap3_pcutouch MACH_OMAP3_PCUTOUCH OMAP3_PCUTOUCH 2837
++smdkc210 MACH_SMDKC210 SMDKC210 2838
++omap3_braillo MACH_OMAP3_BRAILLO OMAP3_BRAILLO 2839
++spyplug MACH_SPYPLUG SPYPLUG 2840
++ginger MACH_GINGER GINGER 2841
++tny_t3530 MACH_TNY_T3530 TNY_T3530 2842
++pca102 MACH_PCA102 PCA102 2843
++spade MACH_SPADE SPADE 2844
++mxc25_topaz MACH_MXC25_TOPAZ MXC25_TOPAZ 2845
++t5325 MACH_T5325 T5325 2846
++gw2361 MACH_GW2361 GW2361 2847
++elog MACH_ELOG ELOG 2848
++income MACH_INCOME INCOME 2849
++bcm589x MACH_BCM589X BCM589X 2850
++etna MACH_ETNA ETNA 2851
++hawks MACH_HAWKS HAWKS 2852
++meson MACH_MESON MESON 2853
++xsbase255 MACH_XSBASE255 XSBASE255 2854
++pvm2030 MACH_PVM2030 PVM2030 2855
++mioa502 MACH_MIOA502 MIOA502 2856
++vvbox_sdorig2 MACH_VVBOX_SDORIG2 VVBOX_SDORIG2 2857
++vvbox_sdlite2 MACH_VVBOX_SDLITE2 VVBOX_SDLITE2 2858
++vvbox_sdpro4 MACH_VVBOX_SDPRO4 VVBOX_SDPRO4 2859
++htc_spv_m700 MACH_HTC_SPV_M700 HTC_SPV_M700 2860
++mx257sx MACH_MX257SX MX257SX 2861
++goni MACH_GONI GONI 2862
++msm8x55_svlte_ffa MACH_MSM8X55_SVLTE_FFA MSM8X55_SVLTE_FFA 2863
++msm8x55_svlte_surf MACH_MSM8X55_SVLTE_SURF MSM8X55_SVLTE_SURF 2864
++quickstep MACH_QUICKSTEP QUICKSTEP 2865
++dmw96 MACH_DMW96 DMW96 2866
++hammerhead MACH_HAMMERHEAD HAMMERHEAD 2867
++trident MACH_TRIDENT TRIDENT 2868
++lightning MACH_LIGHTNING LIGHTNING 2869
++iconnect MACH_ICONNECT ICONNECT 2870
++autobot MACH_AUTOBOT AUTOBOT 2871
++coconut MACH_COCONUT COCONUT 2872
++durian MACH_DURIAN DURIAN 2873
++cayenne MACH_CAYENNE CAYENNE 2874
++fuji MACH_FUJI FUJI 2875
++synology_6282 MACH_SYNOLOGY_6282 SYNOLOGY_6282 2876
++em1sy MACH_EM1SY EM1SY 2877
++m502 MACH_M502 M502 2878
++matrix518 MACH_MATRIX518 MATRIX518 2879
++tiny_gurnard MACH_TINY_GURNARD TINY_GURNARD 2880
++spear1310 MACH_SPEAR1310 SPEAR1310 2881
++bv07 MACH_BV07 BV07 2882
++mxt_td61 MACH_MXT_TD61 MXT_TD61 2883
++openrd_ultimate MACH_OPENRD_ULTIMATE OPENRD_ULTIMATE 2884
++devixp MACH_DEVIXP DEVIXP 2885
++miccpt MACH_MICCPT MICCPT 2886
++mic256 MACH_MIC256 MIC256 2887
++as1167 MACH_AS1167 AS1167 2888
++omap3_ibiza MACH_OMAP3_IBIZA OMAP3_IBIZA 2889
++u5500 MACH_U5500 U5500 2890
++davinci_picto MACH_DAVINCI_PICTO DAVINCI_PICTO 2891
++mecha MACH_MECHA MECHA 2892
++bubba3 MACH_BUBBA3 BUBBA3 2893
++pupitre MACH_PUPITRE PUPITRE 2894
++tegra_harmony MACH_TEGRA_HARMONY TEGRA_HARMONY 2895
++tegra_vogue MACH_TEGRA_VOGUE TEGRA_VOGUE 2896
++tegra_e1165 MACH_TEGRA_E1165 TEGRA_E1165 2897
++simplenet MACH_SIMPLENET SIMPLENET 2898
++ec4350tbm MACH_EC4350TBM EC4350TBM 2899
++pec_tc MACH_PEC_TC PEC_TC 2900
++pec_hc2 MACH_PEC_HC2 PEC_HC2 2901
++esl_mobilis_a MACH_ESL_MOBILIS_A ESL_MOBILIS_A 2902
++esl_mobilis_b MACH_ESL_MOBILIS_B ESL_MOBILIS_B 2903
++esl_wave_a MACH_ESL_WAVE_A ESL_WAVE_A 2904
++esl_wave_b MACH_ESL_WAVE_B ESL_WAVE_B 2905
++unisense_mmm MACH_UNISENSE_MMM UNISENSE_MMM 2906
++blueshark MACH_BLUESHARK BLUESHARK 2907
++e10 MACH_E10 E10 2908
++app3k_robin MACH_APP3K_ROBIN APP3K_ROBIN 2909
++pov15hd MACH_POV15HD POV15HD 2910
++stella MACH_STELLA STELLA 2911
++htc_iolite MACH_MACH_HTC_IOLITE MACH_HTC_IOLITE 2912
++linkstation_lschl MACH_LINKSTATION_LSCHL LINKSTATION_LSCHL 2913
++netwalker MACH_NETWALKER NETWALKER 2914
++acsx106 MACH_ACSX106 ACSX106 2915
++atlas5_c1 MACH_ATLAS5_C1 ATLAS5_C1 2916
++nsb3ast MACH_NSB3AST NSB3AST 2917
++gnet_slc MACH_GNET_SLC GNET_SLC 2918
++af4000 MACH_AF4000 AF4000 2919
++ark9431 MACH_ARK9431 ARK9431 2920
++fs_s5pc100 MACH_FS_S5PC100 FS_S5PC100 2921
++omap3505nova8 MACH_OMAP3505NOVA8 OMAP3505NOVA8 2922
++omap3621_edp1 MACH_OMAP3621_EDP1 OMAP3621_EDP1 2923
++oratisaes MACH_ORATISAES ORATISAES 2924
++smdkv310 MACH_SMDKV310 SMDKV310 2925
++siemens_l0 MACH_SIEMENS_L0 SIEMENS_L0 2926
++ventana MACH_VENTANA VENTANA 2927
++wm8505_7in_netbook MACH_WM8505_7IN_NETBOOK WM8505_7IN_NETBOOK 2928
++ec4350sdb MACH_EC4350SDB EC4350SDB 2929
++mimas MACH_MIMAS MIMAS 2930
++titan MACH_TITAN TITAN 2931
++craneboard MACH_CRANEBOARD CRANEBOARD 2932
++es2440 MACH_ES2440 ES2440 2933
++najay_a9263 MACH_NAJAY_A9263 NAJAY_A9263 2934
++htctornado MACH_HTCTORNADO HTCTORNADO 2935
++dimm_mx257 MACH_DIMM_MX257 DIMM_MX257 2936
++jigen301 MACH_JIGEN JIGEN 2937
++smdk6450 MACH_SMDK6450 SMDK6450 2938
++meno_qng MACH_MENO_QNG MENO_QNG 2939
++ns2416 MACH_NS2416 NS2416 2940
++rpc353 MACH_RPC353 RPC353 2941
++tq6410 MACH_TQ6410 TQ6410 2942
++sky6410 MACH_SKY6410 SKY6410 2943
++dynasty MACH_DYNASTY DYNASTY 2944
++vivo MACH_VIVO VIVO 2945
++bury_bl7582 MACH_BURY_BL7582 BURY_BL7582 2946
++bury_bps5270 MACH_BURY_BPS5270 BURY_BPS5270 2947
++basi MACH_BASI BASI 2948
++tn200 MACH_TN200 TN200 2949
++c2mmi MACH_C2MMI C2MMI 2950
++meson_6236m MACH_MESON_6236M MESON_6236M 2951
++meson_8626m MACH_MESON_8626M MESON_8626M 2952
++tube MACH_TUBE TUBE 2953
++messina MACH_MESSINA MESSINA 2954
++mx50_arm2 MACH_MX50_ARM2 MX50_ARM2 2955
++cetus9263 MACH_CETUS9263 CETUS9263 2956
++brownstone MACH_BROWNSTONE BROWNSTONE 2957
++vmx25 MACH_VMX25 VMX25 2958
++vmx51 MACH_VMX51 VMX51 2959
++abacus MACH_ABACUS ABACUS 2960
++cm4745 MACH_CM4745 CM4745 2961
++oratislink MACH_ORATISLINK ORATISLINK 2962
++davinci_dm365_dvr MACH_DAVINCI_DM365_DVR DAVINCI_DM365_DVR 2963
++netviz MACH_NETVIZ NETVIZ 2964
++flexibity MACH_FLEXIBITY FLEXIBITY 2965
++wlan_computer MACH_WLAN_COMPUTER WLAN_COMPUTER 2966
++lpc24xx MACH_LPC24XX LPC24XX 2967
++spica MACH_SPICA SPICA 2968
++gpsdisplay MACH_GPSDISPLAY GPSDISPLAY 2969
++bipnet MACH_BIPNET BIPNET 2970
++overo_ctu_inertial MACH_OVERO_CTU_INERTIAL OVERO_CTU_INERTIAL 2971
++davinci_dm355_mmm MACH_DAVINCI_DM355_MMM DAVINCI_DM355_MMM 2972
++pc9260_v2 MACH_PC9260_V2 PC9260_V2 2973
++ptx7545 MACH_PTX7545 PTX7545 2974
++tm_efdc MACH_TM_EFDC TM_EFDC 2975
++remove_me MACH_WALDO1 WALDO1 2976
++omap3_waldo1 MACH_OMAP3_WALDO1 OMAP3_WALDO1 2977
++flyer MACH_FLYER FLYER 2978
++tornado3240 MACH_TORNADO3240 TORNADO3240 2979
++soli_01 MACH_SOLI_01 SOLI_01 2980
++omapl138_europalc MACH_OMAPL138_EUROPALC OMAPL138_EUROPALC 2981
++helios_v1 MACH_HELIOS_V1 HELIOS_V1 2982
++netspace_lite_v2 MACH_NETSPACE_LITE_V2 NETSPACE_LITE_V2 2983
++ssc MACH_SSC SSC 2984
++premierwave_en MACH_PREMIERWAVE_EN PREMIERWAVE_EN 2985
++wasabi MACH_WASABI WASABI 2986
++vivo_w MACH_VIVOW VIVOW 2987
++mx50_rdp MACH_MX50_RDP MX50_RDP 2988
++universal_c210 MACH_UNIVERSAL_C210 UNIVERSAL_C210 2989
++real6410 MACH_REAL6410 REAL6410 2990
++spx_sakura MACH_SPX_SAKURA SPX_SAKURA 2991
++ij3k_2440 MACH_IJ3K_2440 IJ3K_2440 2992
++omap3_bc10 MACH_OMAP3_BC10 OMAP3_BC10 2993
++thebe MACH_THEBE THEBE 2994
++rv082 MACH_RV082 RV082 2995
++armlguest MACH_ARMLGUEST ARMLGUEST 2996
++tjinc1000 MACH_TJINC1000 TJINC1000 2997
++dockstar MACH_DOCKSTAR DOCKSTAR 2998
++ax8008 MACH_AX8008 AX8008 2999
++gnet_sgce MACH_GNET_SGCE GNET_SGCE 3000
++pxwnas_500_1000 MACH_PXWNAS_500_1000 PXWNAS_500_1000 3001
++ea20 MACH_EA20 EA20 3002
++awm2 MACH_AWM2 AWM2 3003
++ti8148evm MACH_TI8148EVM TI8148EVM 3004
++tegra_seaboard MACH_TEGRA_SEABOARD TEGRA_SEABOARD 3005
++linkstation_chlv2 MACH_LINKSTATION_CHLV2 LINKSTATION_CHLV2 3006
++tera_pro2_rack MACH_TERA_PRO2_RACK TERA_PRO2_RACK 3007
++rubys MACH_RUBYS RUBYS 3008
++aquarius MACH_AQUARIUS AQUARIUS 3009
++mx53_ard MACH_MX53_ARD MX53_ARD 3010
++mx53_smd MACH_MX53_SMD MX53_SMD 3011
++lswxl MACH_LSWXL LSWXL 3012
++dove_avng_v3 MACH_DOVE_AVNG_V3 DOVE_AVNG_V3 3013
++sdi_ess_9263 MACH_SDI_ESS_9263 SDI_ESS_9263 3014
++jocpu550 MACH_JOCPU550 JOCPU550 3015
++msm8x60_rumi3 MACH_MSM8X60_RUMI3 MSM8X60_RUMI3 3016
++msm8x60_ffa MACH_MSM8X60_FFA MSM8X60_FFA 3017
++yanomami MACH_YANOMAMI YANOMAMI 3018
++gta04 MACH_GTA04 GTA04 3019
++cm_a510 MACH_CM_A510 CM_A510 3020
++omap3_rfs200 MACH_OMAP3_RFS200 OMAP3_RFS200 3021
++kx33xx MACH_KX33XX KX33XX 3022
++ptx7510 MACH_PTX7510 PTX7510 3023
++top9000 MACH_TOP9000 TOP9000 3024
++teenote MACH_TEENOTE TEENOTE 3025
++ts3 MACH_TS3 TS3 3026
++a0 MACH_A0 A0 3027
++fsm9xxx_surf MACH_FSM9XXX_SURF FSM9XXX_SURF 3028
++fsm9xxx_ffa MACH_FSM9XXX_FFA FSM9XXX_FFA 3029
++frrhwcdma60w MACH_FRRHWCDMA60W FRRHWCDMA60W 3030
++remus MACH_REMUS REMUS 3031
++at91cap7xdk MACH_AT91CAP7XDK AT91CAP7XDK 3032
++at91cap7stk MACH_AT91CAP7STK AT91CAP7STK 3033
++kt_sbc_sam9_1 MACH_KT_SBC_SAM9_1 KT_SBC_SAM9_1 3034
++at91sam9263router MACH_ORATISROUTER ORATISROUTER 3035
++armada_xp_db MACH_ARMADA_XP_DB ARMADA_XP_DB 3036
++spdm MACH_SPDM SPDM 3037
++gtib MACH_GTIB GTIB 3038
++dgm3240 MACH_DGM3240 DGM3240 3039
++iv_atlas_i_lpe MACH_ATLAS_I_LPE ATLAS_I_LPE 3040
++htcmega MACH_HTCMEGA HTCMEGA 3041
++tricorder MACH_TRICORDER TRICORDER 3042
++tx28 MACH_TX28 TX28 3043
++bstbrd MACH_BSTBRD BSTBRD 3044
++pwb3090 MACH_PWB3090 PWB3090 3045
++idea6410 MACH_IDEA6410 IDEA6410 3046
++qbc9263 MACH_QBC9263 QBC9263 3047
++borabora MACH_BORABORA BORABORA 3048
++valdez MACH_VALDEZ VALDEZ 3049
++ls9g20 MACH_LS9G20 LS9G20 3050
++mios_v1 MACH_MIOS_V1 MIOS_V1 3051
++s5pc110_crespo MACH_S5PC110_CRESPO S5PC110_CRESPO 3052
++controltek9g20 MACH_CONTROLTEK9G20 CONTROLTEK9G20 3053
++tin307 MACH_TIN307 TIN307 3054
++tin510 MACH_TIN510 TIN510 3055
++ep3505 MACH_EP3517 EP3517 3056
++bluecheese MACH_BLUECHEESE BLUECHEESE 3057
++tem3x30 MACH_TEM3X30 TEM3X30 3058
++harvest_desoto MACH_HARVEST_DESOTO HARVEST_DESOTO 3059
++msm8x60_qrdc MACH_MSM8X60_QRDC MSM8X60_QRDC 3060
++spear900 MACH_SPEAR900 SPEAR900 3061
++pcontrol_g20 MACH_PCONTROL_G20 PCONTROL_G20 3062
++rdstor MACH_RDSTOR RDSTOR 3063
++usdloader MACH_USDLOADER USDLOADER 3064
++tsoploader MACH_TSOPLOADER TSOPLOADER 3065
++kronos MACH_KRONOS KRONOS 3066
++ffcore MACH_FFCORE FFCORE 3067
++mone MACH_MONE MONE 3068
++unit2s MACH_UNIT2S UNIT2S 3069
++acer_a5 MACH_ACER_A5 ACER_A5 3070
++etherpro_isp MACH_ETHERPRO_ISP ETHERPRO_ISP 3071
++stretchs7000 MACH_STRETCHS7000 STRETCHS7000 3072
++p87_smartsim MACH_P87_SMARTSIM P87_SMARTSIM 3073
++tulip MACH_TULIP TULIP 3074
++sunflower MACH_SUNFLOWER SUNFLOWER 3075
++rib MACH_RIB RIB 3076
++clod MACH_CLOD CLOD 3077
++rump MACH_RUMP RUMP 3078
++tenderloin MACH_TENDERLOIN TENDERLOIN 3079
++shortloin MACH_SHORTLOIN SHORTLOIN 3080
++roml1 MACH_CRESPO CRESPO 3081
++antares MACH_ANTARES ANTARES 3082
++wb40n MACH_WB40N WB40N 3083
++herring MACH_HERRING HERRING 3084
++naxy400 MACH_NAXY400 NAXY400 3085
++naxy1200 MACH_NAXY1200 NAXY1200 3086
++vpr200 MACH_VPR200 VPR200 3087
++bug20 MACH_BUG20 BUG20 3088
++goflexnet MACH_GOFLEXNET GOFLEXNET 3089
++torbreck MACH_TORBRECK TORBRECK 3090
++saarb_mg1 MACH_SAARB_MG1 SAARB_MG1 3091
++callisto MACH_CALLISTO CALLISTO 3092
++multhsu MACH_MULTHSU MULTHSU 3093
++saluda MACH_SALUDA SALUDA 3094
++pemp_omap3_apollo MACH_PEMP_OMAP3_APOLLO PEMP_OMAP3_APOLLO 3095
++vc0718 MACH_VC0718 VC0718 3096
++mvblx MACH_MVBLX MVBLX 3097
++inhand_apeiron MACH_INHAND_APEIRON INHAND_APEIRON 3098
++inhand_fury MACH_INHAND_FURY INHAND_FURY 3099
++inhand_siren MACH_INHAND_SIREN INHAND_SIREN 3100
++hdnvp MACH_HDNVP HDNVP 3101
++softwinner MACH_SOFTWINNER SOFTWINNER 3102
++prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103
++nas6210 MACH_NAS6210 NAS6210 3104
++unisdev MACH_UNISDEV UNISDEV 3105
++sbca11 MACH_SBCA11 SBCA11 3106
++saga MACH_SAGA SAGA 3107
++ns_k330 MACH_NS_K330 NS_K330 3108
++tanna MACH_TANNA TANNA 3109
++imate8502 MACH_IMATE8502 IMATE8502 3110
++aspen MACH_ASPEN ASPEN 3111
++daintree_cwac MACH_DAINTREE_CWAC DAINTREE_CWAC 3112
++zmx25 MACH_ZMX25 ZMX25 3113
++maple1 MACH_MAPLE1 MAPLE1 3114
++qsd8x72_surf MACH_QSD8X72_SURF QSD8X72_SURF 3115
++qsd8x72_ffa MACH_QSD8X72_FFA QSD8X72_FFA 3116
++abilene MACH_ABILENE ABILENE 3117
++eigen_ttr MACH_EIGEN_TTR EIGEN_TTR 3118
++iomega_ix2_200 MACH_IOMEGA_IX2_200 IOMEGA_IX2_200 3119
++coretec_vcx7400 MACH_CORETEC_VCX7400 CORETEC_VCX7400 3120
++santiago MACH_SANTIAGO SANTIAGO 3121
++mx257sol MACH_MX257SOL MX257SOL 3122
++strasbourg MACH_STRASBOURG STRASBOURG 3123
++msm8x60_fluid MACH_MSM8X60_FLUID MSM8X60_FLUID 3124
++smartqv5 MACH_SMARTQV5 SMARTQV5 3125
++smartqv3 MACH_SMARTQV3 SMARTQV3 3126
++smartqv7 MACH_SMARTQV7 SMARTQV7 3127
++tegra_paz00 MACH_PAZ00 PAZ00 3128
++acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129
++htc_willow MACH_HTCWILLOW HTCWILLOW 3130
++fwbd_0404 MACH_FWBD_0404 FWBD_0404 3131
++hdgu MACH_HDGU HDGU 3132
++pyramid MACH_PYRAMID PYRAMID 3133
++epiphan MACH_EPIPHAN EPIPHAN 3134
++omap_bender MACH_OMAP_BENDER OMAP_BENDER 3135
++gurnard MACH_GURNARD GURNARD 3136
++gtl_it5100 MACH_GTL_IT5100 GTL_IT5100 3137
++bcm2708 MACH_BCM2708 BCM2708 3138
++mx51_ggc MACH_MX51_GGC MX51_GGC 3139
++sharespace MACH_SHARESPACE SHARESPACE 3140
++haba_knx_explorer MACH_HABA_KNX_EXPLORER HABA_KNX_EXPLORER 3141
++simtec_kirkmod MACH_SIMTEC_KIRKMOD SIMTEC_KIRKMOD 3142
++crux MACH_CRUX CRUX 3143
++mx51_bravo MACH_MX51_BRAVO MX51_BRAVO 3144
++charon MACH_CHARON CHARON 3145
++picocom3 MACH_PICOCOM3 PICOCOM3 3146
++picocom4 MACH_PICOCOM4 PICOCOM4 3147
++serrano MACH_SERRANO SERRANO 3148
++doubleshot MACH_DOUBLESHOT DOUBLESHOT 3149
++evsy MACH_EVSY EVSY 3150
++huashan MACH_HUASHAN HUASHAN 3151
++lausanne MACH_LAUSANNE LAUSANNE 3152
++emerald MACH_EMERALD EMERALD 3153
++tqma35 MACH_TQMA35 TQMA35 3154
++marvel MACH_MARVEL MARVEL 3155
++manuae MACH_MANUAE MANUAE 3156
++chacha MACH_CHACHA CHACHA 3157
++lemon MACH_LEMON LEMON 3158
++csc MACH_CSC CSC 3159
++gira_knxip_router MACH_GIRA_KNXIP_ROUTER GIRA_KNXIP_ROUTER 3160
++t20 MACH_T20 T20 3161
++hdmini MACH_HDMINI HDMINI 3162
++sciphone_g2 MACH_SCIPHONE_G2 SCIPHONE_G2 3163
++express MACH_EXPRESS EXPRESS 3164
++express_kt MACH_EXPRESS_KT EXPRESS_KT 3165
++maximasp MACH_MAXIMASP MAXIMASP 3166
++nitrogen_imx51 MACH_NITROGEN_IMX51 NITROGEN_IMX51 3167
++nitrogen_imx53 MACH_NITROGEN_IMX53 NITROGEN_IMX53 3168
++sunfire MACH_SUNFIRE SUNFIRE 3169
++arowana MACH_AROWANA AROWANA 3170
++tegra_daytona MACH_TEGRA_DAYTONA TEGRA_DAYTONA 3171
++tegra_swordfish MACH_TEGRA_SWORDFISH TEGRA_SWORDFISH 3172
++edison MACH_EDISON EDISON 3173
++svp8500v1 MACH_SVP8500V1 SVP8500V1 3174
++svp8500v2 MACH_SVP8500V2 SVP8500V2 3175
++svp5500 MACH_SVP5500 SVP5500 3176
++b5500 MACH_B5500 B5500 3177
++s5500 MACH_S5500 S5500 3178
++icon MACH_ICON ICON 3179
++elephant MACH_ELEPHANT ELEPHANT 3180
++msm8x60_fusion MACH_MSM8X60_FUSION MSM8X60_FUSION 3181
++shooter MACH_SHOOTER SHOOTER 3182
++spade_lte MACH_SPADE_LTE SPADE_LTE 3183
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0013-sam9g45-UHSDP-add-debug-info.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0013-sam9g45-UHSDP-add-debug-info.patch
new file mode 100644
index 0000000..65a5be9
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0013-sam9g45-UHSDP-add-debug-info.patch
@@ -0,0 +1,130 @@
+From b74219276331e2da3b323c51b378fd2566d62a85 Mon Sep 17 00:00:00 2001
+From: Asen Dimov <dimov at ronetix.at>
+Date: Tue, 8 Feb 2011 11:44:07 +0200
+Subject: [[PATCH 13/22] sam9g45 UHSDP: add debug info
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 7 +++++++
+ drivers/usb/gadget/atmel_usba_udc.c | 30 +++++++++++++++++++++++++++++-
+ 2 files changed, 36 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index 8a0135b..f809ddb 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -51,6 +51,7 @@
+ #include <mach/gpio.h>
+ #include <mach/at91sam9_smc.h>
+ #include <mach/at91_shdwc.h>
++#include <mach/at91_pmc.h>
+
+ #include <linux/usb/gpio_vbus.h>
+
+@@ -848,6 +849,12 @@ static void __init pm9g45_board_init(void)
+ at91_add_device_usbh_ehci(&pm9g45_usbh_hs_data);
+ /* USB HS Device */
+ at91_add_device_usba(&pm9g45_usba_udc_data);
++
++ /* Export UPLLCLK to PCK1 */
++ at91_sys_write (AT91_PMC_PCKR(1), 0x03 );
++ at91_sys_write (AT91_PMC_SCER, AT91_PMC_PCK1 );
++ at91_set_B_periph(AT91_PIN_PB31, 0);
++
+ /* SPI */
+ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
+ /* Touchscreen */
+diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
+index d6ef3d5..b6d7eef 100644
+--- a/drivers/usb/gadget/atmel_usba_udc.c
++++ b/drivers/usb/gadget/atmel_usba_udc.c
+@@ -1753,27 +1753,45 @@ static irqreturn_t usba_vbus_irq(int irq, void *devid)
+ {
+ struct usba_udc *udc = devid;
+ int vbus;
++ unsigned int val;
+
++ printk(KERN_DEBUG "USB device IRQ happening ... \n");
+ /* debounce */
+ udelay(10);
+
+ spin_lock(&udc->lock);
+
+ /* May happen if Vbus pin toggles during probe() */
+- if (!udc->driver)
++ if (!udc->driver) {
++ printk(KERN_DEBUG "Vbus pin toggles during probe()\n");
+ goto out;
++ }
+
+ vbus = gpio_get_value(udc->vbus_pin);
+ if (vbus != udc->vbus_prev) {
+ if (vbus) {
++ printk(KERN_DEBUG "Vbus pin is high\n");
+ toggle_bias(1);
++ val = usba_readl(udc, CTRL);
++ printk(KERN_DEBUG "USBa reg. CTRL: 0x%x\n", val);
+ usba_writel(udc, CTRL, USBA_ENABLE_MASK);
++ val = usba_readl(udc, CTRL);
++ printk(KERN_DEBUG "USBa reg. CTRL: 0x%x\n", val);
++ val = usba_readl(udc, INT_ENB);
++ printk(KERN_DEBUG "USBa reg. INT_ENB: 0x%x\n", val);
+ usba_writel(udc, INT_ENB, USBA_END_OF_RESET);
++ val = usba_readl(udc, INT_ENB);
++ printk(KERN_DEBUG "USBa reg. INT_ENB: 0x%x\n", val);
+ } else {
++ printk(KERN_DEBUG "Vbus pin is low\n");
+ udc->gadget.speed = USB_SPEED_UNKNOWN;
+ reset_all_endpoints(udc);
+ toggle_bias(0);
++ val = usba_readl(udc, CTRL);
++ printk(KERN_DEBUG "USBa reg. CTRL: 0x%x\n", val);
+ usba_writel(udc, CTRL, USBA_DISABLE_MASK);
++ val = usba_readl(udc, CTRL);
++ printk(KERN_DEBUG "USBa reg. CTRL: 0x%x\n", val);
+ if (udc->driver->disconnect) {
+ spin_unlock(&udc->lock);
+ udc->driver->disconnect(&udc->gadget);
+@@ -1781,6 +1799,8 @@ static irqreturn_t usba_vbus_irq(int irq, void *devid)
+ }
+ }
+ udc->vbus_prev = vbus;
++ } else {
++ printk(KERN_DEBUG "Vbus pin has the prevous value\n");
+ }
+
+ out:
+@@ -1888,6 +1908,7 @@ static int __init usba_udc_probe(struct platform_device *pdev)
+ struct clk *pclk, *hclk;
+ struct usba_udc *udc = &the_udc;
+ int irq, ret, i;
++ unsigned int val;
+
+ regs = platform_get_resource(pdev, IORESOURCE_MEM, CTRL_IOMEM_ID);
+ fifo = platform_get_resource(pdev, IORESOURCE_MEM, FIFO_IOMEM_ID);
+@@ -1938,7 +1959,11 @@ static int __init usba_udc_probe(struct platform_device *pdev)
+ /* Make sure we start from a clean slate */
+ clk_enable(pclk);
+ toggle_bias(0);
++ val = usba_readl(udc, CTRL);
++ dev_info(&pdev->dev, "Make sure we start from a clean slate: USBa reg. CTRL: 0x%x\n", val);
+ usba_writel(udc, CTRL, USBA_DISABLE_MASK);
++ val = usba_readl(udc, CTRL);
++ dev_info(&pdev->dev, "Make sure we start from a clean slate: USBa reg. CTRL: 0x%x\n", val);
+ clk_disable(pclk);
+
+ usba_ep = kzalloc(sizeof(struct usba_ep) * pdata->num_ep,
+@@ -2013,6 +2038,9 @@ static int __init usba_udc_probe(struct platform_device *pdev)
+ } else {
+ disable_irq(gpio_to_irq(udc->vbus_pin));
+ }
++ } else {
++ dev_warn(&udc->pdev->dev,
++ "can not get requested vbus_pin!\n");
+ }
+ }
+
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0014-A-mix-of-changes-FIXME-to-choose-a-base-board-each-b.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0014-A-mix-of-changes-FIXME-to-choose-a-base-board-each-b.patch
new file mode 100644
index 0000000..4863f3e
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0014-A-mix-of-changes-FIXME-to-choose-a-base-board-each-b.patch
@@ -0,0 +1,830 @@
+From 80c16000673e3ec95963d9a55429b1b3de6b73a8 Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Thu, 5 May 2011 13:50:17 +0300
+Subject: [[PATCH 14/22] A mix of changes: (FIXME:) - to choose a base board -
+ each base board in separate file - add sound of
+ BB9G45 - add BB9G45 settings - touch a SSC
+ DAI(FIXME:)
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/Kconfig | 22 +++
+ arch/arm/mach-at91/board-pm9g45.c | 250 +++++-------------------------
+ arch/arm/mach-at91/include/mach/bb9263.h | 218 ++++++++++++++++++++++++++
+ arch/arm/mach-at91/include/mach/bb9g45.h | 102 ++++++++++++
+ sound/soc/atmel/Kconfig | 2 +-
+ sound/soc/atmel/atmel_ssc_dai.c | 14 ++-
+ sound/soc/atmel/sam9g20_wm8731.c | 8 +-
+ 7 files changed, 396 insertions(+), 220 deletions(-)
+ create mode 100644 arch/arm/mach-at91/include/mach/bb9263.h
+ create mode 100644 arch/arm/mach-at91/include/mach/bb9g45.h
+
+diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
+index f9fd9dc..04cbbe3 100644
+--- a/arch/arm/mach-at91/Kconfig
++++ b/arch/arm/mach-at91/Kconfig
+@@ -419,6 +419,28 @@ config MACH_PM9G45
+ help
+ Select this if you are using Ronetix's PM9G45 board.
+ <http://ronetix.at/starter_kit_9g45.html>
++
++choice
++ prompt "PM9G45 on Base Board"
++ depends on MACH_PM9G45
++ default MACH_BB9G45_V1_0
++ help
++ The version is writted out on the board.
++
++config MACH_BB9G45_V1_0
++ bool "BB9G45 v1.0"
++ depends on MACH_PM9G45
++ help
++ BB9G45 as a base board.
++
++config MACH_BB9263_V1_1
++ bool "BB9263 v1.1"
++ depends on MACH_PM9G45
++ help
++ BB9263 as a base board.
++
++endchoice
++
+ choice
+ prompt "PM9G45 board version"
+ depends on MACH_PM9G45
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index f809ddb..16ac014 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -58,6 +58,15 @@
+ #include "sam9_smc.h"
+ #include "generic.h"
+
++#if defined(CONFIG_MACH_BB9G45_V1_0)
++#include <mach/bb9g45.h>
++#elif defined(CONFIG_MACH_BB9263_V1_1)
++#include <mach/bb9263.h>
++#else
++#error "No Base Board choosen for PM9G45."
++#endif
++
++
+ static void __init pm9g45_map_io(void)
+ {
+ /* Initialize processor: 12.000 MHz crystal */
+@@ -81,65 +90,6 @@ static void __init pm9g45_init_irq(void)
+ }
+
+ /*
+- * USB HS Host port (common to OHCI & EHCI)
+- */
+-static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
+- .ports = 2,
+- .vbus_pin = { 0, 0},
+-};
+-
+-/*
+- * USB HS Device port
+- */
+-static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
+- .vbus_pin = AT91_PIN_PD1,
+- /*.pullup_pin = 0,*/ /* pull-up driven by UDC */
+-};
+-
+-/*
+- * ADS7846 Touchscreen
+- */
+-#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
+- defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
+-static int ads7843_pendown_state(void)
+-{
+- return !at91_get_gpio_value(AT91_PIN_PD18); /* Touchscreen PENIRQ */
+-}
+-
+-static struct ads7846_platform_data ads_info = {
+- .model = 7843,
+- .x_min = 150,
+- .x_max = 3830,
+- .y_min = 190,
+- .y_max = 3830,
+- .settle_delay_usecs = 2000,
+- .keep_vref_on = 1,
+- .vref_delay_usecs = 500,
+- .x_plate_ohms = 607,
+- .y_plate_ohms = 232,
+- .pressure_max = 15000,
+- .debounce_max = 1,
+- .debounce_rep = 1, //0
+- .debounce_tol = (50), //(~0)
+- .get_pendown_state = ads7843_pendown_state,
+- .penirq_recheck_delay_usecs = 200,
+-};
+-
+-static void __init pm9g45_add_device_ts(void)
+-{
+- at91_set_gpio_input(AT91_PIN_PD18, 1); /* External IRQ, with pullup */
+- at91_set_gpio_input(AT91_PIN_PE31, 1); /* Touchscreen BUSY signal */
+-}
+-#else
+-static void __init pm9g45_add_device_ts(void) {}
+-#endif
+-static struct at91_tsadcc_data pm9g45_tsadcc_data = {
+- .adc_clock = 300000,
+- .pendet_debounce = 0x0d,
+- .ts_sample_hold_time = 0x0a,
+-};
+-
+-/*
+ * SPI devices.
+ */
+ static struct spi_board_info pm9g45_spi_devices[] = {
+@@ -151,8 +101,9 @@ static struct spi_board_info pm9g45_spi_devices[] = {
+ .bus_num = 0,
+ },
+ #endif
+-#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
+- defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
++#if (defined(CONFIG_TOUCHSCREEN_ADS7846) || \
++ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)) && \
++ defined(CONFIG_MACH_BB9263_V1_1)
+ {
+ .modalias = "ads7846",
+ .chip_select = 0,
+@@ -165,18 +116,6 @@ static struct spi_board_info pm9g45_spi_devices[] = {
+ };
+
+ /*
+- * MCI (SD/MMC)
+- */
+-static struct mci_platform_data __initdata pm9g45_mci0_data = {
+- .slot[0] = {
+- .bus_width = 4,
+- .detect_pin = AT91_PIN_PD30,
+- .wp_pin = AT91_PIN_PD29,
+- // .vcc_pin = ... not connected
+- }
+-};
+-
+-/*
+ * MACB Ethernet device
+ */
+ static struct at91_eth_data __initdata pm9g45_macb_data = {
+@@ -651,25 +590,6 @@ static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data;
+ * GPIO Buttons
+ */
+ #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
+-static struct gpio_keys_button pm9g45_buttons[] = {
+- { /* SW3 */
+- .code = KEY_UP,
+- .gpio = AT91_PIN_PE8,
+- .active_low = 1,
+- .desc = "SW3",
+- .wakeup = 1,
+- .type = EV_KEY,
+- },
+- { /* SW4 */
+- .code = KEY_RIGHT,
+- .gpio = AT91_PIN_PE7,
+- .active_low = 1,
+- .desc = "SW4",
+- .wakeup = 1,
+- .type = EV_KEY,
+- }
+-};
+-
+ static struct gpio_keys_platform_data pm9g45_button_data = {
+ .buttons = pm9g45_buttons,
+ .nbuttons = ARRAY_SIZE(pm9g45_buttons),
+@@ -710,22 +630,8 @@ static struct ac97c_platform_data pm9g45_ac97_data = {
+ };
+
+ /*
+- * LEDs ... these could all be PWM-driven, for variable brightness
++ * 1-Wire
+ */
+-static struct gpio_led pm9g45_leds[] = {
+- { /* "right" led, green, userled2 (could be driven by pwm2) */
+- .name = "led0",
+- .gpio = AT91_PIN_PD0,
+- .active_low = 1,
+- .default_trigger = "nand-disk",
+- },
+- { /* "power" led, yellow (could be driven by pwm0) */
+- .name = "led1",
+- .gpio = AT91_PIN_PD31,
+- .active_low = 1,
+- .default_trigger = "heartbeat",
+- }
+-};
+
+ #if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
+ struct w1_gpio_platform_data pm9g45_w1_platdata = {
+@@ -742,104 +648,6 @@ static struct platform_device pm9g45_w1_device = {
+ };
+ #endif
+
+-#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
+- defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
+-static struct at91_cf_data pm9g45_cf_data = {
+- .det_pin = AT91_PIN_PD13,
+- .rst_pin = AT91_PIN_PD14,
+- .irq_pin = AT91_PIN_PE1,
+- // .vcc_pin = ... always powered
+- .chipselect = 4,
+-};
+-
+-static struct resource pm9g45_cf_resources[] = {
+- [0] = {
+- .start = AT91_CHIPSELECT_4,
+- .end = AT91_CHIPSELECT_4 + (0x10000000 - 1),
+- .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
+- },
+-};
+-
+-static struct platform_device pm9g45_cf_device = {
+- .name = "at91_cf",
+- .id = -1,
+- .dev = {
+- .platform_data = &pm9g45_cf_data,
+- },
+- .resource = pm9g45_cf_resources,
+- .num_resources = ARRAY_SIZE(pm9g45_cf_resources),
+-};
+-
+-#define CF_NWE_SETUP (9 << 0)
+-#define CF_NCS_WR_SETUP (2 << 8)
+-#define CF_NRD_SETUP (9 << 16)
+-#define CF_NCS_RD_SETUP (2 << 24)
+-
+-#define CF_NWE_PULSE (17 << 0)
+-#define CF_NCS_WR_PULSE (27 << 8)
+-#define CF_NRD_PULSE (17 << 16)
+-#define CF_NCS_RD_PULSE (27 << 24)
+-
+-#define CF_NWE_CYCLE (40 << 0)
+-#define CF_NRD_CYCLE (40 << 16)
+-
+-#define CF_TDF (1 << 16)
+-
+-static void __init pm9g45_add_device_cf(void) {
+-struct at91_cf_data *data = & pm9g45_cf_data;
+-unsigned int csa;
+-
+- // Setup Compact flash, first enable the address range of
+- // CS4 in HMATRIX user interface
+- csa = at91_sys_read(AT91_MATRIX_EBICSA);
+- at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS4A_SMC_CF0);
+-
+- /* Configure SMC CS4 */
+- at91_sys_write(AT91_SMC_SETUP(4),
+- (CF_NWE_SETUP |
+- CF_NCS_WR_SETUP |
+- CF_NRD_SETUP |
+- CF_NCS_RD_SETUP));
+-
+- at91_sys_write(AT91_SMC_PULSE(4), (CF_NWE_PULSE |
+- CF_NCS_WR_PULSE |
+- CF_NRD_PULSE |
+- CF_NCS_RD_PULSE));
+- at91_sys_write(AT91_SMC_CYCLE(4), (CF_NWE_CYCLE | CF_NRD_CYCLE));
+- // 16 bit
+- at91_sys_write (AT91_SMC_MODE(4), (AT91_SMC_READMODE |
+- AT91_SMC_WRITEMODE |
+- AT91_SMC_EXNWMODE_DISABLE |
+- AT91_SMC_DBW_16 |
+- CF_TDF));
+-
+- /* input/irq */
+- if (data->irq_pin) {
+- at91_set_gpio_input(data->irq_pin, 0);
+- at91_set_deglitch(data->irq_pin, 1);
+- }
+- at91_set_gpio_input(data->det_pin, 0);
+- at91_set_deglitch(data->det_pin, 1);
+-
+- /* outputs, initially off */
+- if (data->vcc_pin)
+- at91_set_gpio_output(data->vcc_pin, 0);
+- if (data->rst_pin)
+- at91_set_gpio_output(data->rst_pin, 0);
+-
+- /* force poweron defaults for these pins ... */
+- at91_set_A_periph(AT91_PIN_PC15, 0); /* */
+- at91_set_A_periph(AT91_PIN_PC12, 0); /* */
+- at91_set_A_periph(AT91_PIN_PC10, 0); /* */
+- at91_set_A_periph(AT91_PIN_PC8, 0); /* */
+- at91_set_A_periph(AT91_PIN_PC9, 0); /* */
+-
+- platform_device_register(&pm9g45_cf_device);
+-}
+-#else
+-void __init pm9g45_add_device_cf(void) {}
+-#endif
+-
+ static void __init pm9g45_board_init(void)
+ {
+ /* Serial */
+@@ -850,16 +658,16 @@ static void __init pm9g45_board_init(void)
+ /* USB HS Device */
+ at91_add_device_usba(&pm9g45_usba_udc_data);
+
+- /* Export UPLLCLK to PCK1 */
+- at91_sys_write (AT91_PMC_PCKR(1), 0x03 );
+- at91_sys_write (AT91_PMC_SCER, AT91_PMC_PCK1 );
+- at91_set_B_periph(AT91_PIN_PB31, 0);
+-
+ /* SPI */
+ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
++
+ /* Touchscreen */
++#if defined(CONFIG_MACH_BB9G45_V1_0)
++ at91_add_device_tsadcc(&pm9g45_tsadcc_data);
++#elif defined(CONFIG_MACH_BB9263_V1_1)
+ pm9g45_add_device_ts();
+- /* at91_add_device_tsadcc(&pm9g45_tsadcc_data); Not used for now */
++#endif
++
+ /* MMC */
+ at91_add_device_mci(0, &pm9g45_mci0_data);
+ /* Ethernet */
+@@ -867,13 +675,31 @@ static void __init pm9g45_board_init(void)
+ /* NAND */
+ pm9g45_add_device_nand();
+ /* I2C */
+- /* No I2C used in pm9g45 */
++#if defined(CONFIG_MACH_BB9G45_V1_0)
++ at91_add_device_i2c( 0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
++#elif defined(CONFIG_MACH_BB9263_V1_1)
++ /* No I2C used in bb9263 */
++#endif
+ /* LCD Controller */
+ pm9g45_add_device_lcdc(&pm9g45_lcdc_data);
+ /* Push Buttons */
+ pm9g45_add_device_buttons();
++
++ /* Sound */
++#if defined(CONFIG_MACH_BB9263_V1_1)
+ /* AC97 */
+ at91_add_device_ac97(&pm9g45_ac97_data);
++#endif
++#if defined(CONFIG_MACH_BB9G45_V1_0)
++ /* PCK0 provides MCLK to the WM8731 */
++ //at91_sys_write (AT91_PMC_PCKR(0), 0x01 );
++ //at91_sys_write (AT91_PMC_SCER, AT91_PMC_PCK0 );
++ at91_set_A_periph(AT91_PIN_PD26, 0);
++ /* SSC (for WM8731) */
++ at91_add_device_ssc(AT91SAM9G45_ID_SSC1, ATMEL_SSC_TX | ATMEL_SSC_RX);
++//? at91_add_device_ssc(AT91SAM9G45_ID_SSC1, ATMEL_SSC_RX);
++#endif
++
+ #if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
+ platform_device_register(&pm9g45_w1_device);
+ #endif
+diff --git a/arch/arm/mach-at91/include/mach/bb9263.h b/arch/arm/mach-at91/include/mach/bb9263.h
+new file mode 100644
+index 0000000..633b917
+--- /dev/null
++++ b/arch/arm/mach-at91/include/mach/bb9263.h
+@@ -0,0 +1,218 @@
++/*
++ * Put some Notes/descriptions here!
++ * CopyRight
++ */
++
++#ifndef BB9263_H
++#define BB9263_H
++
++/*
++ * USB HS Host port (common to OHCI & EHCI)
++ */
++static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
++ .ports = 2,
++ .vbus_pin = { 0, 0},
++};
++
++/*
++ * USB HS Device port
++ */
++static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
++ .vbus_pin = AT91_PIN_PD1,
++ /*.pullup_pin = 0,*/ /* pull-up driven by UDC */
++};
++
++/*
++ * ADS7846 Touchscreen
++ */
++#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
++ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
++static int ads7843_pendown_state(void)
++{
++ return !at91_get_gpio_value(AT91_PIN_PD18); /* Touchscreen PENIRQ */
++}
++
++static struct ads7846_platform_data ads_info = {
++ .model = 7843,
++ .x_min = 150,
++ .x_max = 3830,
++ .y_min = 190,
++ .y_max = 3830,
++ .settle_delay_usecs = 2000,
++ .keep_vref_on = 1,
++ .vref_delay_usecs = 500,
++ .x_plate_ohms = 607,
++ .y_plate_ohms = 232,
++ .pressure_max = 15000,
++ .debounce_max = 1,
++ .debounce_rep = 1, //0
++ .debounce_tol = (50), //(~0)
++ .get_pendown_state = ads7843_pendown_state,
++ .penirq_recheck_delay_usecs = 200,
++};
++
++static void __init pm9g45_add_device_ts(void)
++{
++ at91_set_gpio_input(AT91_PIN_PD18, 1); /* External IRQ, with pullup */
++ at91_set_gpio_input(AT91_PIN_PE31, 1); /* Touchscreen BUSY signal */
++}
++#else
++static void __init pm9g45_add_device_ts(void) {}
++#endif
++
++/*
++ * MCI (SD/MMC)
++ */
++static struct mci_platform_data __initdata pm9g45_mci0_data = {
++ .slot[0] = {
++ .bus_width = 4,
++ .detect_pin = AT91_PIN_PD6,
++ .wp_pin = -1,
++ // .vcc_pin = ... not connected
++ }
++};
++
++/*
++ * GPIO Buttons
++ */
++#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
++static struct gpio_keys_button pm9g45_buttons[] = {
++ { /* SW3 */
++ .code = KEY_UP,
++ .gpio = AT91_PIN_PE8,
++ .active_low = 1,
++ .desc = "SW3",
++ .wakeup = 1,
++ .type = EV_KEY,
++ },
++ { /* SW4 */
++ .code = KEY_RIGHT,
++ .gpio = AT91_PIN_PE7,
++ .active_low = 1,
++ .desc = "SW4",
++ .wakeup = 1,
++ .type = EV_KEY,
++ }
++};
++#endif
++
++/*
++ * LEDs ... these could all be PWM-driven, for variable brightness
++ */
++static struct gpio_led pm9g45_leds[] = {
++ { /* "right" led, green, userled2 (could be driven by pwm2) */
++ .name = "led0",
++ .gpio = AT91_PIN_PD0,
++ .active_low = 1,
++ .default_trigger = "nand-disk",
++ },
++ { /* "power" led, yellow (could be driven by pwm0) */
++ .name = "led1",
++ .gpio = AT91_PIN_PD31,
++ .active_low = 1,
++ .default_trigger = "heartbeat",
++ }
++};
++
++/*
++ * CompactFlash
++ */
++#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
++ defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
++static struct at91_cf_data pm9g45_cf_data = {
++ .det_pin = AT91_PIN_PD13,
++ .rst_pin = AT91_PIN_PD14,
++ .irq_pin = AT91_PIN_PE1,
++ // .vcc_pin = ... always powered
++ .chipselect = 4,
++};
++
++static struct resource pm9g45_cf_resources[] = {
++ [0] = {
++ .start = AT91_CHIPSELECT_4,
++ .end = AT91_CHIPSELECT_4 + (0x10000000 - 1),
++ .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
++ },
++};
++
++static struct platform_device pm9g45_cf_device = {
++ .name = "at91_cf",
++ .id = -1,
++ .dev = {
++ .platform_data = &pm9g45_cf_data,
++ },
++ .resource = pm9g45_cf_resources,
++ .num_resources = ARRAY_SIZE(pm9g45_cf_resources),
++};
++
++#define CF_NWE_SETUP (9 << 0)
++#define CF_NCS_WR_SETUP (2 << 8)
++#define CF_NRD_SETUP (9 << 16)
++#define CF_NCS_RD_SETUP (2 << 24)
++
++#define CF_NWE_PULSE (17 << 0)
++#define CF_NCS_WR_PULSE (27 << 8)
++#define CF_NRD_PULSE (17 << 16)
++#define CF_NCS_RD_PULSE (27 << 24)
++
++#define CF_NWE_CYCLE (40 << 0)
++#define CF_NRD_CYCLE (40 << 16)
++
++#define CF_TDF (1 << 16)
++
++static void __init pm9g45_add_device_cf(void) {
++struct at91_cf_data *data = & pm9g45_cf_data;
++unsigned int csa;
++
++ // Setup Compact flash, first enable the address range of
++ // CS4 in HMATRIX user interface
++ csa = at91_sys_read(AT91_MATRIX_EBICSA);
++ at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS4A_SMC_CF0);
++
++ /* Configure SMC CS4 */
++ at91_sys_write(AT91_SMC_SETUP(4),
++ (CF_NWE_SETUP |
++ CF_NCS_WR_SETUP |
++ CF_NRD_SETUP |
++ CF_NCS_RD_SETUP));
++
++ at91_sys_write(AT91_SMC_PULSE(4), (CF_NWE_PULSE |
++ CF_NCS_WR_PULSE |
++ CF_NRD_PULSE |
++ CF_NCS_RD_PULSE));
++ at91_sys_write(AT91_SMC_CYCLE(4), (CF_NWE_CYCLE | CF_NRD_CYCLE));
++ // 16 bit
++ at91_sys_write (AT91_SMC_MODE(4), (AT91_SMC_READMODE |
++ AT91_SMC_WRITEMODE |
++ AT91_SMC_EXNWMODE_DISABLE |
++ AT91_SMC_DBW_16 |
++ CF_TDF));
++
++ /* input/irq */
++ if (data->irq_pin) {
++ at91_set_gpio_input(data->irq_pin, 0);
++ at91_set_deglitch(data->irq_pin, 1);
++ }
++ at91_set_gpio_input(data->det_pin, 0);
++ at91_set_deglitch(data->det_pin, 1);
++
++ /* outputs, initially off */
++ if (data->vcc_pin)
++ at91_set_gpio_output(data->vcc_pin, 0);
++ if (data->rst_pin)
++ at91_set_gpio_output(data->rst_pin, 0);
++
++ /* force poweron defaults for these pins ... */
++ at91_set_A_periph(AT91_PIN_PC15, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC12, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC10, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC8, 0); /* */
++ at91_set_A_periph(AT91_PIN_PC9, 0); /* */
++
++ platform_device_register(&pm9g45_cf_device);
++}
++#else
++void __init pm9g45_add_device_cf(void) {}
++#endif
++
++#endif
+diff --git a/arch/arm/mach-at91/include/mach/bb9g45.h b/arch/arm/mach-at91/include/mach/bb9g45.h
+new file mode 100644
+index 0000000..2ebc9b2
+--- /dev/null
++++ b/arch/arm/mach-at91/include/mach/bb9g45.h
+@@ -0,0 +1,102 @@
++/*
++ * Put some Notes/descriptions here!
++ * CopyRight
++ */
++
++#ifndef BB9G45_H
++#define BB9G45_H
++
++/*
++ * USB HS Host port (common to OHCI & EHCI)
++ */
++static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
++ .ports = 2,
++ .vbus_pin = { AT91_PIN_PD0, AT91_PIN_PD8},
++};
++
++/*
++ * USB HS Device port
++ */
++static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
++ .vbus_pin = AT91_PIN_PD7,
++ /*.pullup_pin = 0,*/ /* pull-up driven by UDC */
++};
++
++
++static struct at91_tsadcc_data pm9g45_tsadcc_data = {
++ .adc_clock = 300000,
++ .pendet_debounce = 0x0d,
++ .ts_sample_hold_time = 0x0a,
++};
++
++/*
++ * MCI (SD/MMC)
++ */
++static struct mci_platform_data __initdata pm9g45_mci0_data = {
++ .slot[0] = {
++ .bus_width = 4,
++ .detect_pin = AT91_PIN_PD30,
++ .wp_pin = AT91_PIN_PD29,
++ // .vcc_pin = ... not connected
++ }
++};
++
++/*
++ * LEDs ... these could all be PWM-driven, for variable brightness
++ */
++static struct gpio_led pm9g45_leds[] = {
++ { /* "right" led, green, userled2 (could be driven by pwm2) */
++ .name = "led0",
++ .gpio = AT91_PIN_PD30,
++ .active_low = 1,
++ .default_trigger = "nand-disk",
++ },
++ { /* "power" led, yellow (could be driven by pwm0) */
++ .name = "led1",
++ .gpio = AT91_PIN_PD31,
++ .active_low = 1,
++ .default_trigger = "heartbeat",
++ }
++};
++
++/*
++ * GPIO Buttons
++ */
++#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
++static struct gpio_keys_button pm9g45_buttons[] = {
++ { /* SW3 */
++ .code = KEY_UP,
++ .gpio = AT91_PIN_PC8,
++ .active_low = 1,
++ .desc = "SW3",
++ .wakeup = 1,
++ .type = EV_KEY,
++ },
++ { /* SW4 */
++ .code = KEY_RIGHT,
++ .gpio = AT91_PIN_PC6,
++ .active_low = 1,
++ .desc = "SW4",
++ .wakeup = 1,
++ .type = EV_KEY,
++ }
++};
++#endif
++
++/*
++ * I2C
++ */
++static struct i2c_board_info __initdata ek_i2c_devices[] = {
++ {
++ I2C_BOARD_INFO("wm8731", 0x1b),
++ },
++};
++
++
++/*
++ * CompactFlash
++ */
++void __init pm9g45_add_device_cf(void) {}
++
++
++#endif
+diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
+index e720d5e..804167a 100644
+--- a/sound/soc/atmel/Kconfig
++++ b/sound/soc/atmel/Kconfig
+@@ -16,7 +16,7 @@ config SND_ATMEL_SOC_SSC
+
+ config SND_AT91_SOC_SAM9G20_WM8731
+ tristate "SoC Audio support for WM8731-based At91sam9g20 evaluation board"
+- depends on ATMEL_SSC && ARCH_AT91SAM9G20 && SND_ATMEL_SOC
++ depends on ATMEL_SSC && (ARCH_AT91SAM9G20 || ARCH_AT91SAM9G45) && SND_ATMEL_SOC
+ select SND_ATMEL_SOC_SSC
+ select SND_SOC_WM8731
+ help
+diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
+index 7e78e02..ccb8191 100644
+--- a/sound/soc/atmel/atmel_ssc_dai.c
++++ b/sound/soc/atmel/atmel_ssc_dai.c
+@@ -50,6 +50,8 @@
+
+ #if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)
+ #define NUM_SSC_DEVICES 1
++#elif defined(CONFIG_ARCH_AT91SAM9G45)
++#define NUM_SSC_DEVICES 2
+ #else
+ #define NUM_SSC_DEVICES 3
+ #endif
+@@ -107,7 +109,7 @@ static struct atmel_pcm_dma_params ssc_dma_params[NUM_SSC_DEVICES][2] = {
+ .pdc = &pdc_rx_reg,
+ .mask = &ssc_rx_mask,
+ } },
+-#if NUM_SSC_DEVICES == 3
++#if NUM_SSC_DEVICES >= 2
+ {{
+ .name = "SSC1 PCM out",
+ .pdc = &pdc_tx_reg,
+@@ -118,6 +120,8 @@ static struct atmel_pcm_dma_params ssc_dma_params[NUM_SSC_DEVICES][2] = {
+ .pdc = &pdc_rx_reg,
+ .mask = &ssc_rx_mask,
+ } },
++#endif
++#if NUM_SSC_DEVICES == 3
+ {{
+ .name = "SSC2 PCM out",
+ .pdc = &pdc_tx_reg,
+@@ -139,13 +143,15 @@ static struct atmel_ssc_info ssc_info[NUM_SSC_DEVICES] = {
+ .dir_mask = SSC_DIR_MASK_UNUSED,
+ .initialized = 0,
+ },
+-#if NUM_SSC_DEVICES == 3
++#if NUM_SSC_DEVICES >= 2
+ {
+ .name = "ssc1",
+ .lock = __SPIN_LOCK_UNLOCKED(ssc_info[1].lock),
+ .dir_mask = SSC_DIR_MASK_UNUSED,
+ .initialized = 0,
+ },
++#endif
++#if NUM_SSC_DEVICES == 3
+ {
+ .name = "ssc2",
+ .lock = __SPIN_LOCK_UNLOCKED(ssc_info[2].lock),
+@@ -724,7 +730,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
+ .ops = &atmel_ssc_dai_ops,
+ .private_data = &ssc_info[0],
+ },
+-#if NUM_SSC_DEVICES == 3
++#if NUM_SSC_DEVICES >= 2
+ { .name = "atmel-ssc1",
+ .id = 1,
+ .suspend = atmel_ssc_suspend,
+@@ -742,6 +748,8 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
+ .ops = &atmel_ssc_dai_ops,
+ .private_data = &ssc_info[1],
+ },
++#endif
++#if NUM_SSC_DEVICES == 3
+ { .name = "atmel-ssc2",
+ .id = 2,
+ .suspend = atmel_ssc_suspend,
+diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
+index 36851dc..976d2ba 100644
+--- a/sound/soc/atmel/sam9g20_wm8731.c
++++ b/sound/soc/atmel/sam9g20_wm8731.c
+@@ -207,7 +207,7 @@ static int __init at91sam9g20ek_init(void)
+ struct clk *pllb;
+ int ret;
+
+- if (!(machine_is_at91sam9g20ek() || machine_is_at91sam9g20ek_2mmc()))
++ if (!(machine_is_at91sam9g20ek() || machine_is_at91sam9g20ek_2mmc() || machine_is_pm9g45()))
+ return -ENODEV;
+
+ /*
+@@ -226,7 +226,7 @@ static int __init at91sam9g20ek_init(void)
+ ret = PTR_ERR(mclk);
+ goto err_mclk;
+ }
+- ret = clk_set_parent(mclk, pllb);
++ ret = 0; //clk_set_parent(mclk, pllb); /* FIX: */
+ clk_put(pllb);
+ if (ret != 0) {
+ printk(KERN_ERR "ASoC: Failed to set MCLK parent\n");
+@@ -238,9 +238,9 @@ static int __init at91sam9g20ek_init(void)
+ /*
+ * Request SSC device
+ */
+- ssc = ssc_request(0);
++ ssc = ssc_request(1);
+ if (IS_ERR(ssc)) {
+- printk(KERN_ERR "ASoC: Failed to request SSC 0\n");
++ printk(KERN_ERR "ASoC: Failed to request SSC 1\n");
+ ret = PTR_ERR(ssc);
+ ssc = NULL;
+ goto err_ssc;
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0015-Selects-CompactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0015-Selects-CompactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch
new file mode 100644
index 0000000..b13f03e
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0015-Selects-CompactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch
@@ -0,0 +1,38 @@
+From f51023c8d8950fe1ca40a5c964a850393d4b988d Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Mon, 9 May 2011 19:21:07 +0300
+Subject: [[PATCH 15/22] * Selects CompactFlash only on BB9263 v1.1 * add a
+ FIX message for LCD power enable
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index 16ac014..5e39e5b 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -200,6 +200,7 @@ static void __init pm9g45_add_device_nand(void)
+ | ATMEL_LCDC_DISTYPE_TFT \
+ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
+
++/* FIXME: what is this for? And AT91_PIN_PE6 is WRONG. */
+ static void at91_lcdc_power_control(int on)
+ {
+ at91_set_gpio_value(AT91_PIN_PE6, on);
+@@ -703,8 +704,11 @@ static void __init pm9g45_board_init(void)
+ #if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
+ platform_device_register(&pm9g45_w1_device);
+ #endif
++
++#if defined(CONFIG_MACH_BB9263_V1_1)
+ /* Compact flash */
+ pm9g45_add_device_cf();
++#endif
+ /* LEDs */
+ at91_gpio_leds(pm9g45_leds, ARRAY_SIZE(pm9g45_leds));
+ }
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0016-enable-GAT.-LCD-backlight-capabilities.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0016-enable-GAT.-LCD-backlight-capabilities.patch
new file mode 100644
index 0000000..627bf3c
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0016-enable-GAT.-LCD-backlight-capabilities.patch
@@ -0,0 +1,25 @@
+From 8a51d9581b9d81f765a435427fd37464020ad997 Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Tue, 10 May 2011 15:18:33 +0300
+Subject: [[PATCH 16/22] enable GAT... LCD backlight capabilities.
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index 5e39e5b..ef1305e 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -532,6 +532,7 @@ static struct fb_monspecs __initdata tft_default_monspecs = {
+ };
+
+ static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
++ .lcdcon_is_backlight = true,
+ .default_bpp = 24,
+ .default_dmacon = ATMEL_LCDC_DMAEN,
+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0017-pm9g45-change-GAT.-color-depth-and-wiring-mode.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0017-pm9g45-change-GAT.-color-depth-and-wiring-mode.patch
new file mode 100644
index 0000000..7d0fe50
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0017-pm9g45-change-GAT.-color-depth-and-wiring-mode.patch
@@ -0,0 +1,32 @@
+From 0835df1cb0f83efbb01d911578f06b192ae15c4e Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Wed, 25 May 2011 16:51:39 +0300
+Subject: [[PATCH 17/22] pm9g45: change GAT... color depth and wiring mode
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index ef1305e..0eaacde 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -533,11 +533,12 @@ static struct fb_monspecs __initdata tft_default_monspecs = {
+
+ static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
+ .lcdcon_is_backlight = true,
+- .default_bpp = 24,
++ .default_bpp = 16,
+ .default_dmacon = ATMEL_LCDC_DMAEN,
+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
+ .default_monspecs = &tft_default_monspecs,
+ .guard_time = 2,
++ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
+ };
+
+ #elif defined(CONFIG_PM9G45_LCD_CLAA080MB0ACW)
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch
new file mode 100644
index 0000000..8681ab4
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch
@@ -0,0 +1,57 @@
+From 3866c70db12c08f25e6bc4a95bcc8043474a0fcf Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Fri, 27 May 2011 18:42:54 +0300
+Subject: [[PATCH 18/22] RGB_BGR fixes of LCD on bb9g45
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 2 +-
+ drivers/video/atmel_lcdfb.c | 5 +++++
+ include/video/atmel_lcdc.h | 1 +
+ 3 files changed, 7 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index 0eaacde..e312dc5 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -538,7 +538,7 @@ static struct atmel_lcdfb_info __initdata pm9g45_lcdc_data = {
+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
+ .default_monspecs = &tft_default_monspecs,
+ .guard_time = 2,
+- .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
++ .lcd_wiring_mode = ATMEL_LCDC_WIRING_BGR565,
+ };
+
+ #elif defined(CONFIG_PM9G45_LCD_CLAA080MB0ACW)
+diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
+index 935fb45..848fdfa 100644
+--- a/drivers/video/atmel_lcdfb.c
++++ b/drivers/video/atmel_lcdfb.c
+@@ -414,6 +414,11 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
+ var->red.offset = 10;
+ var->blue.offset = 0;
+ var->green.length = 5;
++ } else if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_BGR565) {
++ /* BGR:565 mode */
++ var->red.offset = 0;
++ var->blue.offset = 11;
++ var->green.length = 6;
+ } else {
+ /* BGR:555 mode */
+ var->red.offset = 0;
+diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h
+index 0c864db..cf8bc2f 100644
+--- a/include/video/atmel_lcdc.h
++++ b/include/video/atmel_lcdc.h
+@@ -31,6 +31,7 @@
+ #define ATMEL_LCDC_WIRING_BGR 0
+ #define ATMEL_LCDC_WIRING_RGB 1
+ #define ATMEL_LCDC_WIRING_RGB555 2
++#define ATMEL_LCDC_WIRING_BGR565 3
+
+
+ /* LCD Controller info data structure, stored in device platform_data */
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0019-bb9g45-sound-now-works.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0019-bb9g45-sound-now-works.patch
new file mode 100644
index 0000000..abc6b31
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0019-bb9g45-sound-now-works.patch
@@ -0,0 +1,36 @@
+From 304aab3bad5cfd4455f87bb282f622c18d1bd948 Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Fri, 27 May 2011 20:30:30 +0300
+Subject: [[PATCH 19/22] bb9g45: sound now works
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/board-pm9g45.c | 9 ++++-----
+ 1 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index e312dc5..d229f7d 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -694,13 +694,12 @@ static void __init pm9g45_board_init(void)
+ at91_add_device_ac97(&pm9g45_ac97_data);
+ #endif
+ #if defined(CONFIG_MACH_BB9G45_V1_0)
+- /* PCK0 provides MCLK to the WM8731 */
+- //at91_sys_write (AT91_PMC_PCKR(0), 0x01 );
+- //at91_sys_write (AT91_PMC_SCER, AT91_PMC_PCK0 );
+- at91_set_A_periph(AT91_PIN_PD26, 0);
+ /* SSC (for WM8731) */
++ /* PCK0 provides MCLK to the WM8731, clock have to be 12Mhz */
++ at91_sys_write (AT91_PMC_PCKR(0), 0x01 );
++ at91_sys_write (AT91_PMC_SCER, AT91_PMC_PCK0 );
++ at91_set_A_periph(AT91_PIN_PD26, 0);
+ at91_add_device_ssc(AT91SAM9G45_ID_SSC1, ATMEL_SSC_TX | ATMEL_SSC_RX);
+-//? at91_add_device_ssc(AT91SAM9G45_ID_SSC1, ATMEL_SSC_RX);
+ #endif
+
+ #if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0020-input-atmel_tsadcc-introduce-changes-needed-for-at91.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0020-input-atmel_tsadcc-introduce-changes-needed-for-at91.patch
new file mode 100644
index 0000000..0c82fbd
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0020-input-atmel_tsadcc-introduce-changes-needed-for-at91.patch
@@ -0,0 +1,179 @@
+From e218a9d78a56465d1d22901560f9ebc49c8002b9 Mon Sep 17 00:00:00 2001
+From: nferre <nferre at 50fbe906-d41e-0410-8a96-31537896a350>
+Date: Tue, 1 Jun 2010 13:58:44 +0000
+Subject: [[PATCH 20/22] input: atmel_tsadcc: introduce changes needed for
+ at91sam9m10g45ek board
+
+Introduce filter function in touchscreen driver.
+
+git-svn-id: svn://rfolxts01.rfo.atmel.com/at91_sandbox/linux-2.6.x/branches/linux-2.6.30-at91@15229 50fbe906-d41e-0410-8a96-31537896a350
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ drivers/input/touchscreen/atmel_tsadcc.c | 86 ++++++++++++++++++++++++++++--
+ 1 files changed, 82 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/input/touchscreen/atmel_tsadcc.c b/drivers/input/touchscreen/atmel_tsadcc.c
+index 27ac912..0648b88 100644
+--- a/drivers/input/touchscreen/atmel_tsadcc.c
++++ b/drivers/input/touchscreen/atmel_tsadcc.c
+@@ -95,6 +95,7 @@
+ #define PRESCALER_VAL(x) ((x) >> 8)
+
+ #define ADC_DEFAULT_CLOCK 100000
++#define COUNT_MAX 20
+
+ struct atmel_tsadcc {
+ struct input_dev *input;
+@@ -107,10 +108,47 @@ struct atmel_tsadcc {
+ };
+
+ static void __iomem *tsc_base;
++static unsigned int trigger_period;
+
+ #define atmel_tsadcc_read(reg) __raw_readl(tsc_base + (reg))
+ #define atmel_tsadcc_write(reg, val) __raw_writel((val), tsc_base + (reg))
+
++static unsigned int do_filter(unsigned int val[], int count, int needed) {
++ int i, j;
++ int max_delta, max_delta_index;
++ unsigned int average;
++
++ for (i = count; i > needed; i--) {
++ average = 0;
++ for (j = 0; j < i; j++)
++ average += val[j];
++ average /= i;
++
++ max_delta = 0;
++ max_delta_index = -1;
++ for (j = 0; j < i; j++) {
++ if (abs(val[j] - average) > max_delta) {
++ max_delta = abs(val[j] - average);
++ max_delta_index = j;
++ }
++ }
++
++ if (max_delta_index < 0)
++ return average;
++
++ if (max_delta_index < i - 1)
++ for (j = 0; j < i - max_delta_index; j++)
++ val[max_delta_index + j] = val[max_delta_index + j + 1];
++ }
++
++ average = 0;
++ for (i = 0; i < needed; i++)
++ average += val[i];
++ average /= needed;
++
++ return average;
++}
++
+ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+ {
+ struct atmel_tsadcc *ts_dev = (struct atmel_tsadcc *)dev;
+@@ -118,6 +156,7 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+
+ unsigned int status;
+ unsigned int reg;
++ static int count = 0;
+
+ status = atmel_tsadcc_read(ATMEL_TSADCC_SR);
+ status &= atmel_tsadcc_read(ATMEL_TSADCC_IMR);
+@@ -147,11 +186,13 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+ atmel_tsadcc_write(ATMEL_TSADCC_IER,
+ ATMEL_TSADCC_EOC(3) | ATMEL_TSADCC_NOCNT);
+ atmel_tsadcc_write(ATMEL_TSADCC_TRGR,
+- ATMEL_TSADCC_TRGMOD_PERIOD | (0x0FFF << 16));
++ ATMEL_TSADCC_TRGMOD_PERIOD | (trigger_period << 16));
++
++ count = 0;
+
+ } else if (status & ATMEL_TSADCC_EOC(3)) {
+ /* Conversion finished */
+-
++#if defined(CONFIG_MACH_AT91SAM9G45EKES) || defined(CONFIG_MACH_AT91SAM9M10EKES)
+ if (ts_dev->bufferedmeasure) {
+ /* Last measurement is always discarded, since it can
+ * be erroneous.
+@@ -163,6 +204,7 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+ input_sync(input_dev);
+ } else
+ ts_dev->bufferedmeasure = 1;
++#endif
+
+ /* Now make new measurement */
+ ts_dev->prev_absx = atmel_tsadcc_read(ATMEL_TSADCC_CDR3) << 10;
+@@ -170,8 +212,31 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+
+ ts_dev->prev_absy = atmel_tsadcc_read(ATMEL_TSADCC_CDR1) << 10;
+ ts_dev->prev_absy /= atmel_tsadcc_read(ATMEL_TSADCC_CDR0);
+- }
+
++#if defined(CONFIG_MACH_AT91SAM9M10G45EK)
++ {
++ static unsigned int point_buffer_x[COUNT_MAX];
++ static unsigned int point_buffer_y[COUNT_MAX];
++
++ if (count < COUNT_MAX) {
++ point_buffer_x[count] = ts_dev->prev_absx;
++ point_buffer_y[count] = ts_dev->prev_absy;
++ count++;
++ } else {
++ unsigned int x, y;
++
++ count = 0;
++ x = do_filter(point_buffer_x, COUNT_MAX, COUNT_MAX * 3 / 4);
++ y = do_filter(point_buffer_y, COUNT_MAX, COUNT_MAX * 3 / 4);
++ input_report_abs(input_dev, ABS_X, x);
++ input_report_abs(input_dev, ABS_Y, y);
++ input_report_key(input_dev, BTN_TOUCH, 1);
++ input_report_abs(input_dev, ABS_PRESSURE, 7500);
++ input_sync(input_dev);
++ }
++ }
++#endif
++ }
+ return IRQ_HANDLED;
+ }
+
+@@ -188,6 +253,7 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
+ int err = 0;
+ unsigned int prsc;
+ unsigned int reg;
++ unsigned int startup_time;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+@@ -276,6 +342,18 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
+
+ prsc = (prsc / (2 * pdata->adc_clock)) - 1;
+
++#if defined(CONFIG_MACH_AT91SAM9M10G45EK)
++ trigger_period = pdata->adc_clock / (200 * COUNT_MAX) -1;
++ if (trigger_period < 1)
++ trigger_period = 1;
++ startup_time = (60 * pdata->adc_clock) / (8 * 1000000) - 1;
++ if (startup_time < 1)
++ startup_time = 1;
++#else
++ trigger_period = 0x0FFF;
++ startup_time = 0x26;
++#endif
++
+ /* saturate if this value is too high */
+ if (cpu_is_at91sam9rl()) {
+ if (prsc > PRESCALER_VAL(ATMEL_TSADCC_PRESCAL))
+@@ -291,7 +369,7 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
+ ((0x00 << 5) & ATMEL_TSADCC_SLEEP) | /* Normal Mode */
+ ((0x01 << 6) & ATMEL_TSADCC_PENDET) | /* Enable Pen Detect */
+ (prsc << 8) |
+- ((0x26 << 16) & ATMEL_TSADCC_STARTUP) |
++ ((startup_time << 16) & ATMEL_TSADCC_STARTUP) |
+ ((pdata->pendet_debounce << 28) & ATMEL_TSADCC_PENDBC);
+
+ atmel_tsadcc_write(ATMEL_TSADCC_CR, ATMEL_TSADCC_SWRST);
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0021-make-touchscreen-on-EB9G45-works.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0021-make-touchscreen-on-EB9G45-works.patch
new file mode 100644
index 0000000..51e1b3f
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0021-make-touchscreen-on-EB9G45-works.patch
@@ -0,0 +1,62 @@
+From a90c7b6e30ada0bd7ac65552b682f811af198cb7 Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Fri, 10 Jun 2011 11:39:49 +0300
+Subject: [[PATCH 21/22] make touchscreen on EB9G45 works
+
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/include/mach/bb9g45.h | 2 +-
+ drivers/input/touchscreen/atmel_tsadcc.c | 9 ++++++---
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/arch/arm/mach-at91/include/mach/bb9g45.h b/arch/arm/mach-at91/include/mach/bb9g45.h
+index 2ebc9b2..b9085e7 100644
+--- a/arch/arm/mach-at91/include/mach/bb9g45.h
++++ b/arch/arm/mach-at91/include/mach/bb9g45.h
+@@ -26,7 +26,7 @@ static struct usba_platform_data __initdata pm9g45_usba_udc_data = {
+ static struct at91_tsadcc_data pm9g45_tsadcc_data = {
+ .adc_clock = 300000,
+ .pendet_debounce = 0x0d,
+- .ts_sample_hold_time = 0x0a,
++ .ts_sample_hold_time = 0x01, /* 0x0a */
+ };
+
+ /*
+diff --git a/drivers/input/touchscreen/atmel_tsadcc.c b/drivers/input/touchscreen/atmel_tsadcc.c
+index 0648b88..35c553e 100644
+--- a/drivers/input/touchscreen/atmel_tsadcc.c
++++ b/drivers/input/touchscreen/atmel_tsadcc.c
+@@ -213,7 +213,7 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
+ ts_dev->prev_absy = atmel_tsadcc_read(ATMEL_TSADCC_CDR1) << 10;
+ ts_dev->prev_absy /= atmel_tsadcc_read(ATMEL_TSADCC_CDR0);
+
+-#if defined(CONFIG_MACH_AT91SAM9M10G45EK)
++#if defined(CONFIG_MACH_AT91SAM9M10G45EK) || defined(CONFIG_MACH_PM9G45)
+ {
+ static unsigned int point_buffer_x[COUNT_MAX];
+ static unsigned int point_buffer_y[COUNT_MAX];
+@@ -322,8 +322,8 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
+ input_dev->dev.parent = &pdev->dev;
+
+ __set_bit(EV_ABS, input_dev->evbit);
+- input_set_abs_params(input_dev, ABS_X, 0, 0x3FF, 0, 0);
+- input_set_abs_params(input_dev, ABS_Y, 0, 0x3FF, 0, 0);
++ input_set_abs_params(input_dev, ABS_X, 35, 988, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, 83, 966, 0, 0);
+ input_set_abs_params(input_dev, ABS_PRESSURE, 0, 15000, 0, 0);
+
+ input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
+@@ -349,6 +349,9 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
+ startup_time = (60 * pdata->adc_clock) / (8 * 1000000) - 1;
+ if (startup_time < 1)
+ startup_time = 1;
++#elif defined(CONFIG_MACH_PM9G45)
++ trigger_period = 0x0FF; /* with these values PM9G45 and BB9G45 it works good. */
++ startup_time = 0x26;
+ #else
+ trigger_period = 0x0FFF;
+ startup_time = 0x26;
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/0022-bb9g45-USB-connector-J3-to-act-as-device.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0022-bb9g45-USB-connector-J3-to-act-as-device.patch
new file mode 100644
index 0000000..79f6ca3
--- /dev/null
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/0022-bb9g45-USB-connector-J3-to-act-as-device.patch
@@ -0,0 +1,112 @@
+From d46292912c2978da9d8760155da0a03e7428c289 Mon Sep 17 00:00:00 2001
+From: Asen Chavdarov Dimov <dimov at ronetix.at>
+Date: Wed, 15 Jun 2011 15:31:39 +0300
+Subject: [[PATCH 22/22] bb9g45: USB connector J3 to act as device
+
+AT91 USB OTG is not yet avilable, so the port will act ase a
+device by defalut.
+
+Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
+---
+ arch/arm/mach-at91/Kconfig | 28 +++++++++++++++++++++++++++-
+ arch/arm/mach-at91/board-pm9g45.c | 2 ++
+ arch/arm/mach-at91/include/mach/bb9g45.h | 12 +++++++++++-
+ 3 files changed, 40 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
+index 04cbbe3..63d8d88 100644
+--- a/arch/arm/mach-at91/Kconfig
++++ b/arch/arm/mach-at91/Kconfig
+@@ -425,7 +425,7 @@ choice
+ depends on MACH_PM9G45
+ default MACH_BB9G45_V1_0
+ help
+- The version is writted out on the board.
++ The version is printed on the board.
+
+ config MACH_BB9G45_V1_0
+ bool "BB9G45 v1.0"
+@@ -442,6 +442,32 @@ config MACH_BB9263_V1_1
+ endchoice
+
+ choice
++ prompt "BB9G45 USB microAB connector function"
++ depends on MACH_BB9G45_V1_0
++ default MACH_BB9G45_USB_DEVICE
++ help
++ With the OTG functionality the power of the connector
++ must be off. AT91 OTG is not yet functional/ready, so the
++ J3 port can be used as host or device chosen from here.
++
++config MACH_BB9G45_USB_OTG
++ bool "USB OTG(not yet implemented)"
++ help
++ J3 connector is USB OTG(not yet implemented)
++
++config MACH_BB9G45_USB_HOST
++ bool "USB host"
++ help
++ J3 connector is USB host
++
++config MACH_BB9G45_USB_DEVICE
++ bool "USB device"
++ help
++ J3 connector is USB device
++
++endchoice
++
++choice
+ prompt "PM9G45 board version"
+ depends on MACH_PM9G45
+ default MACH_PM9G45_V1_2
+diff --git a/arch/arm/mach-at91/board-pm9g45.c b/arch/arm/mach-at91/board-pm9g45.c
+index d229f7d..341797f 100644
+--- a/arch/arm/mach-at91/board-pm9g45.c
++++ b/arch/arm/mach-at91/board-pm9g45.c
+@@ -658,8 +658,10 @@ static void __init pm9g45_board_init(void)
+ /* USB HS Host */
+ at91_add_device_usbh_ohci(&pm9g45_usbh_hs_data);
+ at91_add_device_usbh_ehci(&pm9g45_usbh_hs_data);
++#if defined(CONFIG_MACH_BB9G45_USB_DEVICE)
+ /* USB HS Device */
+ at91_add_device_usba(&pm9g45_usba_udc_data);
++#endif
+
+ /* SPI */
+ at91_add_device_spi(pm9g45_spi_devices, ARRAY_SIZE(pm9g45_spi_devices));
+diff --git a/arch/arm/mach-at91/include/mach/bb9g45.h b/arch/arm/mach-at91/include/mach/bb9g45.h
+index b9085e7..49b03ef 100644
+--- a/arch/arm/mach-at91/include/mach/bb9g45.h
++++ b/arch/arm/mach-at91/include/mach/bb9g45.h
+@@ -1,6 +1,6 @@
+ /*
+ * Put some Notes/descriptions here!
+- * CopyRight
++ * Copyright
+ */
+
+ #ifndef BB9G45_H
+@@ -8,10 +8,20 @@
+
+ /*
+ * USB HS Host port (common to OHCI & EHCI)
++ * With the OTG functionality the power of the connector
++ * must be off. AT91 OTG is not yet functional/ready, so the
++ * J3 port can be used as host or device chosen from here.
+ */
+ static struct at91_usbh_data __initdata pm9g45_usbh_hs_data = {
++#if defined(CONFIG_MACH_BB9G45_USB_OTG) /* FIXME: AT91 OTG is not ready YET */
++#error "AT91 OTG is not ready yet ."
++#elif defined(CONFIG_MACH_BB9G45_USB_HOST)
+ .ports = 2,
+ .vbus_pin = { AT91_PIN_PD0, AT91_PIN_PD8},
++#else /* act as USB device CONFIG_MACH_BB9G45_USB_DEVICE */
++ .ports = 1,
++ .vbus_pin = { AT91_PIN_PD0 },
++#endif
+ };
+
+ /*
+--
+1.7.4.4
+
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/2.6.30-at91-exp.patch b/recipes/linux/linux-2.6.30/ronetix-pm9g45/2.6.30-at91-exp.patch
deleted file mode 100644
index 8f6b9f5..0000000
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/2.6.30-at91-exp.patch
+++ /dev/null
@@ -1,33460 +0,0 @@
-From 460964e13607480ec141bd72fc76c5af52989175 Mon Sep 17 00:00:00 2001
-From: nferre <nferre at 50fbe906-d41e-0410-8a96-31537896a350>
-Date: Wed, 14 Oct 2009 13:31:17 +0000
-Subject: [PATCH] at91: dm9000 initialization update
-
-Add information in dm9000 mac/phy chip initialization:
-- irq resource details
-- platform data details
-
-Signed-off-by: Nicolas Ferre <nicolas.ferre at atmel.com>
-
-git-svn-id: svn://rfolxts01.rfo.atmel.com/at91_sandbox/linux-2.6.x/branches/linux-2.6.30-at91@11572 50fbe906-d41e-0410-8a96-31537896a350
----
- arch/arm/mach-at91/board-sam9261ek.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9261ek.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/board-sam9261ek.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9261ek.c 2011-02-01 16:40:30.145073648 +0100
-@@ -93,11 +93,12 @@
- .start = AT91_PIN_PC11,
- .end = AT91_PIN_PC11,
- .flags = IORESOURCE_IRQ
-+ | IORESOURCE_IRQ_LOWEDGE | IORESOURCE_IRQ_HIGHEDGE,
- }
- };
-
- static struct dm9000_plat_data dm9000_platdata = {
-- .flags = DM9000_PLATF_16BITONLY,
-+ .flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
- };
-
- static struct platform_device dm9000_device = {
-@@ -287,7 +288,11 @@
- */
- static struct at73c213_board_info at73c213_data = {
- .ssc_id = 1,
-+#if defined(CONFIG_MACH_AT91SAM9261EK)
- .shortname = "AT91SAM9261-EK external DAC",
-+#else
-+ .shortname = "AT91SAM9G10-EK external DAC",
-+#endif
- };
-
- #if defined(CONFIG_SND_AT73C213) || defined(CONFIG_SND_AT73C213_MODULE)
-@@ -414,6 +419,9 @@
- .default_monspecs = &at91fb_default_stn_monspecs,
- .atmel_lcdfb_power_control = at91_lcdc_stn_power_control,
- .guard_time = 1,
-+#if defined(CONFIG_MACH_AT91SAM9G10EK)
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
-+#endif
- };
-
- #else
-@@ -467,6 +475,9 @@
- .default_monspecs = &at91fb_default_tft_monspecs,
- .atmel_lcdfb_power_control = at91_lcdc_tft_power_control,
- .guard_time = 1,
-+#if defined(CONFIG_MACH_AT91SAM9G10EK)
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
-+#endif
- };
- #endif
-
-@@ -603,7 +614,11 @@
- | AT91_SHDW_RTTWKEN);
- }
-
-+#if defined(CONFIG_MACH_AT91SAM9261EK)
- MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")
-+#else
-+MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")
-+#endif
- /* Maintainer: Atmel */
- .phys_io = AT91_BASE_SYS,
- .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9g20ek.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/board-sam9g20ek.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9g20ek.c 2011-02-01 16:40:30.193007582 +0100
-@@ -37,6 +37,8 @@
-
- #include <mach/board.h>
- #include <mach/gpio.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
- #include <mach/at91sam9_smc.h>
-
- #include "sam9_smc.h"
-@@ -193,11 +195,12 @@
-
- /*
- * MCI (SD/MMC)
-- * det_pin, wp_pin and vcc_pin are not connected
-+ * wp_pin and vcc_pin are not connected
- */
- static struct at91_mmc_data __initdata ek_mmc_data = {
- .slot_b = 1,
- .wire4 = 1,
-+ .det_pin = AT91_PIN_PC9,
- };
-
-
-@@ -218,6 +221,65 @@
- }
- };
-
-+/*
-+ * GPIO Buttons
-+ */
-+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-+static struct gpio_keys_button ek_buttons[] = {
-+ {
-+ .gpio = AT91_PIN_PA30,
-+ .code = BTN_3,
-+ .desc = "Button 3",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ },
-+ {
-+ .gpio = AT91_PIN_PA31,
-+ .code = BTN_4,
-+ .desc = "Button 4",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ }
-+};
-+
-+static struct gpio_keys_platform_data ek_button_data = {
-+ .buttons = ek_buttons,
-+ .nbuttons = ARRAY_SIZE(ek_buttons),
-+};
-+
-+static struct platform_device ek_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &ek_button_data,
-+ }
-+};
-+
-+static void __init ek_add_device_buttons(void)
-+{
-+ at91_set_gpio_input(AT91_PIN_PA30, 1); /* btn3 */
-+ at91_set_deglitch(AT91_PIN_PA30, 1);
-+ at91_set_gpio_input(AT91_PIN_PA31, 1); /* btn4 */
-+ at91_set_deglitch(AT91_PIN_PA31, 1);
-+
-+ platform_device_register(&ek_button_device);
-+}
-+#else
-+static void __init ek_add_device_buttons(void) {}
-+#endif
-+
-+/*
-+ * I2C
-+ */
-+static struct i2c_board_info __initdata ek_i2c_devices[] = {
-+ {
-+ I2C_BOARD_INFO("24c512", 0x50),
-+ I2C_BOARD_INFO("wm8731", 0x1b),
-+ },
-+};
-+
-+
- static void __init ek_board_init(void)
- {
- /* Serial */
-@@ -235,9 +297,11 @@
- /* MMC */
- at91_add_device_mmc(0, &ek_mmc_data);
- /* I2C */
-- at91_add_device_i2c(NULL, 0);
-+ at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
- /* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
-+ /* Push Buttons */
-+ ek_add_device_buttons();
- /* PCK0 provides MCLK to the WM8731 */
- at91_set_B_periph(AT91_PIN_PC1, 0);
- /* SSC (for WM8731) */
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9rlek.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/board-sam9rlek.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9rlek.c 2011-02-01 16:40:30.165043750 +0100
-@@ -15,6 +15,8 @@
- #include <linux/spi/spi.h>
- #include <linux/fb.h>
- #include <linux/clk.h>
-+#include <linux/input.h>
-+#include <linux/gpio_keys.h>
-
- #include <video/atmel_lcdc.h>
-
-@@ -186,19 +188,21 @@
- static void at91_lcdc_power_control(int on)
- {
- if (on)
-- at91_set_gpio_value(AT91_PIN_PA30, 0); /* power up */
-+ at91_set_gpio_value(AT91_PIN_PC1, 0); /* power up */
- else
-- at91_set_gpio_value(AT91_PIN_PA30, 1); /* power down */
-+ at91_set_gpio_value(AT91_PIN_PC1, 1); /* power down */
- }
-
- /* Driver datas */
- static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
-+ .lcdcon_is_backlight = true,
- .default_bpp = 16,
- .default_dmacon = ATMEL_LCDC_DMAEN,
- .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2,
- .default_monspecs = &at91fb_default_monspecs,
- .atmel_lcdfb_power_control = at91_lcdc_power_control,
- .guard_time = 1,
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
- };
-
- #else
-@@ -206,6 +210,97 @@
- #endif
-
-
-+/*
-+ * AC97
-+ * reset_pin is not connected: NRST
-+ */
-+static struct ac97c_platform_data ek_ac97_data = {
-+};
-+
-+
-+/*
-+ * LEDs
-+ */
-+static struct gpio_led ek_leds[] = {
-+ { /* "bottom" led, green, userled1 to be defined */
-+ .name = "ds1",
-+ .gpio = AT91_PIN_PD15,
-+ .active_low = 1,
-+ .default_trigger = "none",
-+ },
-+ { /* "bottom" led, green, userled2 to be defined */
-+ .name = "ds2",
-+ .gpio = AT91_PIN_PD16,
-+ .active_low = 1,
-+ .default_trigger = "none",
-+ },
-+ { /* "power" led, yellow */
-+ .name = "ds3",
-+ .gpio = AT91_PIN_PD14,
-+ .default_trigger = "heartbeat",
-+ }
-+};
-+
-+
-+/*
-+ * Touchscreen
-+ */
-+static struct at91_tsadcc_data ek_tsadcc_data = {
-+ .adc_clock = 1000000,
-+ .pendet_debounce = 0x0f,
-+ .ts_sample_hold_time = 0x03,
-+};
-+
-+
-+/*
-+ * GPIO Buttons
-+ */
-+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-+static struct gpio_keys_button ek_buttons[] = {
-+ {
-+ .gpio = AT91_PIN_PB0,
-+ .code = BTN_2,
-+ .desc = "Right Click",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ },
-+ {
-+ .gpio = AT91_PIN_PB1,
-+ .code = BTN_1,
-+ .desc = "Left Click",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ }
-+};
-+
-+static struct gpio_keys_platform_data ek_button_data = {
-+ .buttons = ek_buttons,
-+ .nbuttons = ARRAY_SIZE(ek_buttons),
-+};
-+
-+static struct platform_device ek_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &ek_button_data,
-+ }
-+};
-+
-+static void __init ek_add_device_buttons(void)
-+{
-+ at91_set_gpio_input(AT91_PIN_PB1, 1); /* btn1 */
-+ at91_set_deglitch(AT91_PIN_PB1, 1);
-+ at91_set_gpio_input(AT91_PIN_PB0, 1); /* btn2 */
-+ at91_set_deglitch(AT91_PIN_PB0, 1);
-+
-+ platform_device_register(&ek_button_device);
-+}
-+#else
-+static void __init ek_add_device_buttons(void) {}
-+#endif
-+
-+
- static void __init ek_board_init(void)
- {
- /* Serial */
-@@ -222,8 +317,14 @@
- at91_add_device_mmc(0, &ek_mmc_data);
- /* LCD Controller */
- at91_add_device_lcdc(&ek_lcdc_data);
-+ /* AC97 */
-+ at91_add_device_ac97(&ek_ac97_data);
- /* Touch Screen Controller */
-- at91_add_device_tsadcc();
-+ at91_add_device_tsadcc(&ek_tsadcc_data);
-+ /* LEDs */
-+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
-+ /* Push Buttons */
-+ ek_add_device_buttons();
- /* shutdown controller, wakeup button (5 msec low) */
- at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
- | AT91_SHDW_RTTWKEN);
-Index: linux-2.6.30/arch/avr32/mach-at32ap/include/mach/cpu.h
-===================================================================
---- linux-2.6.30.orig/arch/avr32/mach-at32ap/include/mach/cpu.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/avr32/mach-at32ap/include/mach/cpu.h 2011-02-01 16:40:30.165043750 +0100
-@@ -31,5 +31,8 @@
- #define cpu_is_at91sam9263() (0)
- #define cpu_is_at91sam9rl() (0)
- #define cpu_is_at91cap9() (0)
-+#define cpu_is_at91sam9g10() (0)
-+#define cpu_is_at91sam9g45() (0)
-+#define cpu_is_at91sam9g45es() (0)
-
- #endif /* __ASM_ARCH_CPU_H */
-Index: linux-2.6.30/arch/arm/mach-at91/clock.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/clock.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/clock.c 2011-02-01 16:40:30.141043034 +0100
-@@ -44,6 +44,30 @@
- #define clk_is_sys(x) ((x)->type & CLK_TYPE_SYSTEM)
-
-
-+/*
-+ * Chips have some kind of clocks : group them by functionality
-+ */
-+#define cpu_has_utmi() ( cpu_is_at91cap9() \
-+ || cpu_is_at91sam9rl() \
-+ || cpu_is_at91sam9g45())
-+
-+#define cpu_has_800M_plla() ( cpu_is_at91sam9g20() \
-+ || cpu_is_at91sam9g45())
-+
-+#define cpu_has_300M_plla() (cpu_is_at91sam9g10())
-+
-+#define cpu_has_pllb() (!(cpu_is_at91sam9rl() \
-+ || cpu_is_at91sam9g45()))
-+
-+#define cpu_has_upll() (cpu_is_at91sam9g45())
-+
-+/* USB host HS & FS */
-+#define cpu_has_uhp() (!cpu_is_at91sam9rl())
-+
-+/* USB device FS only */
-+#define cpu_has_udpfs() (!(cpu_is_at91sam9rl() \
-+ || cpu_is_at91sam9g45()))
-+
- static LIST_HEAD(clocks);
- static DEFINE_SPINLOCK(clk_lock);
-
-@@ -115,6 +139,13 @@
- {
- unsigned int uckr = at91_sys_read(AT91_CKGR_UCKR);
-
-+ if (cpu_is_at91sam9g45()) {
-+ if (is_on)
-+ uckr |= AT91_PMC_BIASEN;
-+ else
-+ uckr &= ~AT91_PMC_BIASEN;
-+ }
-+
- if (is_on) {
- is_on = AT91_PMC_LOCKU;
- at91_sys_write(AT91_CKGR_UCKR, uckr | clk->pmc_mask);
-@@ -141,7 +172,7 @@
- };
- static struct clk uhpck = {
- .name = "uhpck",
-- .parent = &pllb,
-+ /*.parent = ... we choose parent at runtime */
- .mode = pmc_sys_mode,
- };
-
-@@ -174,7 +205,11 @@
- case AT91_PMC_CSS_PLLA:
- return &plla;
- case AT91_PMC_CSS_PLLB:
-- return &pllb;
-+ if (cpu_has_upll())
-+ /* CSS_PLLB == CSS_UPLL */
-+ return &utmi_clk;
-+ else if (cpu_has_pllb())
-+ return &pllb;
- }
-
- return NULL;
-@@ -305,6 +340,7 @@
- unsigned long flags;
- unsigned prescale;
- unsigned long actual;
-+ unsigned long prev = ULONG_MAX;
-
- if (!clk_is_programmable(clk))
- return -EINVAL;
-@@ -312,8 +348,16 @@
-
- actual = clk->parent->rate_hz;
- for (prescale = 0; prescale < 7; prescale++) {
-- if (actual && actual <= rate)
-+ if (actual > rate)
-+ prev = actual;
-+
-+ if (actual && actual <= rate) {
-+ if ((prev - rate) < (rate - actual)) {
-+ actual = prev;
-+ prescale--;
-+ }
- break;
-+ }
- actual >>= 1;
- }
-
-@@ -340,7 +384,7 @@
- u32 pckr;
-
- pckr = at91_sys_read(AT91_PMC_PCKR(clk->id));
-- pckr &= AT91_PMC_CSS_PLLB; /* clock selection */
-+ pckr &= AT91_PMC_CSS; /* clock selection */
- pckr |= prescale << 2;
- at91_sys_write(AT91_PMC_PCKR(clk->id), pckr);
- clk->rate_hz = actual;
-@@ -368,6 +412,10 @@
- return -EBUSY;
- if (!clk_is_primary(parent) || !clk_is_programmable(clk))
- return -EINVAL;
-+
-+ if (cpu_is_at91sam9rl() && parent->id == AT91_PMC_CSS_PLLB)
-+ return -EINVAL;
-+
- spin_lock_irqsave(&clk_lock, flags);
-
- clk->rate_hz = parent->rate_hz;
-@@ -379,7 +427,7 @@
- }
- EXPORT_SYMBOL(clk_set_parent);
-
--/* establish PCK0..PCK4 parentage and rate */
-+/* establish PCK0..PCKN parentage and rate */
- static void __init init_programmable_clock(struct clk *clk)
- {
- struct clk *parent;
-@@ -407,11 +455,13 @@
- seq_printf(s, "MOR = %8x\n", at91_sys_read(AT91_CKGR_MOR));
- seq_printf(s, "MCFR = %8x\n", at91_sys_read(AT91_CKGR_MCFR));
- seq_printf(s, "PLLA = %8x\n", at91_sys_read(AT91_CKGR_PLLAR));
-- if (!cpu_is_at91sam9rl())
-+ if (cpu_has_pllb())
- seq_printf(s, "PLLB = %8x\n", at91_sys_read(AT91_CKGR_PLLBR));
-- if (cpu_is_at91cap9() || cpu_is_at91sam9rl())
-+ if (cpu_has_utmi())
- seq_printf(s, "UCKR = %8x\n", uckr = at91_sys_read(AT91_CKGR_UCKR));
- seq_printf(s, "MCKR = %8x\n", at91_sys_read(AT91_PMC_MCKR));
-+ if (cpu_has_upll())
-+ seq_printf(s, "USB = %8x\n", at91_sys_read(AT91_PMC_USB));
- seq_printf(s, "SR = %8x\n", sr = at91_sys_read(AT91_PMC_SR));
-
- seq_printf(s, "\n");
-@@ -572,20 +622,67 @@
- &clk32k,
- &main_clk,
- &plla,
-- &pllb,
--
-- /* PLLB children (USB) */
-- &udpck,
-- &uhpck,
-
- /* MCK */
- &mck
- };
-
-+/* PLLB generated USB full speed clock init */
-+static void __init at91_pllb_usbfs_clock_init(unsigned long main_clock)
-+{
-+ /*
-+ * USB clock init: choose 48 MHz PLLB value,
-+ * disable 48MHz clock during usb peripheral suspend.
-+ *
-+ * REVISIT: assumes MCK doesn't derive from PLLB!
-+ */
-+ uhpck.parent = &pllb;
-+
-+ at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) | AT91_PMC_USB96M;
-+ pllb.rate_hz = at91_pll_rate(&pllb, main_clock, at91_pllb_usb_init);
-+ if (cpu_is_at91rm9200()) {
-+ uhpck.pmc_mask = AT91RM9200_PMC_UHP;
-+ udpck.pmc_mask = AT91RM9200_PMC_UDP;
-+ at91_sys_write(AT91_PMC_SCER, AT91RM9200_PMC_MCKUDP);
-+ } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() ||
-+ cpu_is_at91sam9263() || cpu_is_at91sam9g20() ||
-+ cpu_is_at572d940hf() || cpu_is_at91sam9g10()) {
-+ uhpck.pmc_mask = AT91SAM926x_PMC_UHP;
-+ udpck.pmc_mask = AT91SAM926x_PMC_UDP;
-+ } else if (cpu_is_at91cap9()) {
-+ uhpck.pmc_mask = AT91CAP9_PMC_UHP;
-+ }
-+ at91_sys_write(AT91_CKGR_PLLBR, 0);
-+
-+ udpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init);
-+ uhpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init);
-+}
-+
-+/* UPLL generated USB full speed clock init */
-+static void __init at91_upll_usbfs_clock_init(unsigned long main_clock)
-+{
-+ /*
-+ * USB clock init: choose 480 MHz from UPLL,
-+ */
-+ unsigned int usbr = AT91_PMC_USBS_UPLL;
-+
-+ /* Setup divider by 10 to reach 48 MHz */
-+ usbr |= ((10 - 1) << 8) & AT91_PMC_OHCIUSBDIV;
-+
-+ at91_sys_write(AT91_PMC_USB, usbr);
-+
-+ /* Now set uhpck values */
-+ uhpck.parent = &utmi_clk;
-+ uhpck.pmc_mask = AT91SAM926x_PMC_UHP;
-+ uhpck.rate_hz = utmi_clk.parent->rate_hz;
-+ uhpck.rate_hz /= 1 + ((at91_sys_read(AT91_PMC_USB) & AT91_PMC_OHCIUSBDIV) >> 8);
-+}
-+
- int __init at91_clock_init(unsigned long main_clock)
- {
- unsigned tmp, freq, mckr;
- int i;
-+ int pll_overclock = false;
-
- /*
- * When the bootloader initialized the main oscillator correctly,
-@@ -603,43 +700,50 @@
-
- /* report if PLLA is more than mildly overclocked */
- plla.rate_hz = at91_pll_rate(&plla, main_clock, at91_sys_read(AT91_CKGR_PLLAR));
-- if ((!cpu_is_at91sam9g20() && plla.rate_hz > 209000000)
-- || (cpu_is_at91sam9g20() && plla.rate_hz > 800000000))
-+ if (cpu_has_300M_plla()) {
-+ if (plla.rate_hz > 300000000)
-+ pll_overclock = true;
-+ } else if (cpu_has_800M_plla()) {
-+ if (plla.rate_hz > 800000000)
-+ pll_overclock = true;
-+ } else {
-+ if (plla.rate_hz > 209000000)
-+ pll_overclock = true;
-+ }
-+ if (pll_overclock)
- pr_info("Clocks: PLLA overclocked, %ld MHz\n", plla.rate_hz / 1000000);
-
-- /*
-- * USB clock init: choose 48 MHz PLLB value,
-- * disable 48MHz clock during usb peripheral suspend.
-- *
-- * REVISIT: assumes MCK doesn't derive from PLLB!
-- */
-- at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) | AT91_PMC_USB96M;
-- pllb.rate_hz = at91_pll_rate(&pllb, main_clock, at91_pllb_usb_init);
-- if (cpu_is_at91rm9200()) {
-- uhpck.pmc_mask = AT91RM9200_PMC_UHP;
-- udpck.pmc_mask = AT91RM9200_PMC_UDP;
-- at91_sys_write(AT91_PMC_SCER, AT91RM9200_PMC_MCKUDP);
-- } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || cpu_is_at91sam9263() || cpu_is_at91sam9g20() || cpu_is_at572d940hf()) {
-- uhpck.pmc_mask = AT91SAM926x_PMC_UHP;
-- udpck.pmc_mask = AT91SAM926x_PMC_UDP;
-- } else if (cpu_is_at91cap9()) {
-- uhpck.pmc_mask = AT91CAP9_PMC_UHP;
-+ if (cpu_is_at91sam9g45()) {
-+ mckr = at91_sys_read(AT91_PMC_MCKR);
-+ plla.rate_hz /= (1 << ((mckr & AT91_PMC_PLLADIV2) >> 12)); /* plla divisor by 2 */
-+ }
-+
-+ if (cpu_has_upll() && !cpu_has_pllb()) {
-+ /* setup UTMI clock as the fourth primary clock
-+ * (instead of pllb) */
-+ utmi_clk.type |= CLK_TYPE_PRIMARY;
-+ utmi_clk.id = 3;
- }
-- at91_sys_write(AT91_CKGR_PLLBR, 0);
-
-- udpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init);
-- uhpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init);
-
- /*
- * USB HS clock init
- */
-- if (cpu_is_at91cap9() || cpu_is_at91sam9rl()) {
-+ if (cpu_has_utmi())
- /*
- * multiplier is hard-wired to 40
- * (obtain the USB High Speed 480 MHz when input is 12 MHz)
- */
- utmi_clk.rate_hz = 40 * utmi_clk.parent->rate_hz;
-- }
-+
-+ /*
-+ * USB FS clock init
-+ */
-+ if (cpu_has_pllb())
-+ at91_pllb_usbfs_clock_init(main_clock);
-+ if (cpu_has_upll())
-+ /* assumes that we choose UPLL for USB and not PLLA */
-+ at91_upll_usbfs_clock_init(main_clock);
-
- /*
- * MCK and CPU derive from one of those primary clocks.
-@@ -649,21 +753,34 @@
- mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS);
- freq = mck.parent->rate_hz;
- freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */
-- if (cpu_is_at91rm9200())
-+ if (cpu_is_at91rm9200()) {
- mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
-- else if (cpu_is_at91sam9g20()) {
-+ } else if (cpu_is_at91sam9g20()) {
- mck.rate_hz = (mckr & AT91_PMC_MDIV) ?
- freq / ((mckr & AT91_PMC_MDIV) >> 7) : freq; /* mdiv ; (x >> 7) = ((x >> 8) * 2) */
- if (mckr & AT91_PMC_PDIV)
- freq /= 2; /* processor clock division */
-- } else
-- mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
-+ } else if (cpu_is_at91sam9g45()) {
-+ mck.rate_hz = (mckr & AT91_PMC_MDIV) == AT91SAM9_PMC_MDIV_3 ?
-+ freq / 3 : freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
-+ } else {
-+ mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
-+ }
-
- /* Register the PMC's standard clocks */
- for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++)
- list_add_tail(&standard_pmc_clocks[i]->node, &clocks);
-
-- if (cpu_is_at91cap9() || cpu_is_at91sam9rl())
-+ if (cpu_has_pllb())
-+ list_add_tail(&pllb.node, &clocks);
-+
-+ if (cpu_has_uhp())
-+ list_add_tail(&uhpck.node, &clocks);
-+
-+ if (cpu_has_udpfs())
-+ list_add_tail(&udpck.node, &clocks);
-+
-+ if (cpu_has_utmi())
- list_add_tail(&utmi_clk.node, &clocks);
-
- /* MCK and CPU clock are "always on" */
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/at91_pmc.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/at91_pmc.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/at91_pmc.h 2011-02-01 16:40:30.133004041 +0100
-@@ -23,7 +23,7 @@
- #define AT91_PMC_PCK (1 << 0) /* Processor Clock */
- #define AT91RM9200_PMC_UDP (1 << 1) /* USB Devcice Port Clock [AT91RM9200 only] */
- #define AT91RM9200_PMC_MCKUDP (1 << 2) /* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */
--#define AT91CAP9_PMC_DDR (1 << 2) /* DDR Clock [AT91CAP9 revC only] */
-+#define AT91CAP9_PMC_DDR (1 << 2) /* DDR Clock [CAP9 revC & some SAM9 only] */
- #define AT91RM9200_PMC_UHP (1 << 4) /* USB Host Port Clock [AT91RM9200 only] */
- #define AT91SAM926x_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91SAM926x only] */
- #define AT91CAP9_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91CAP9 only] */
-@@ -40,11 +40,11 @@
- #define AT91_PMC_PCDR (AT91_PMC + 0x14) /* Peripheral Clock Disable Register */
- #define AT91_PMC_PCSR (AT91_PMC + 0x18) /* Peripheral Clock Status Register */
-
--#define AT91_CKGR_UCKR (AT91_PMC + 0x1C) /* UTMI Clock Register [SAM9RL, CAP9] */
-+#define AT91_CKGR_UCKR (AT91_PMC + 0x1C) /* UTMI Clock Register [some SAM9, CAP9] */
- #define AT91_PMC_UPLLEN (1 << 16) /* UTMI PLL Enable */
- #define AT91_PMC_UPLLCOUNT (0xf << 20) /* UTMI PLL Start-up Time */
- #define AT91_PMC_BIASEN (1 << 24) /* UTMI BIAS Enable */
--#define AT91_PMC_BIASCOUNT (0xf << 28) /* UTMI PLL Start-up Time */
-+#define AT91_PMC_BIASCOUNT (0xf << 28) /* UTMI BIAS Start-up Time */
-
- #define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register [not on SAM9RL] */
- #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */
-@@ -73,6 +73,7 @@
- #define AT91_PMC_CSS_MAIN (1 << 0)
- #define AT91_PMC_CSS_PLLA (2 << 0)
- #define AT91_PMC_CSS_PLLB (3 << 0)
-+#define AT91_PMC_CSS_UPLL (3 << 0) /* [some SAM9 only] */
- #define AT91_PMC_PRES (7 << 2) /* Master Clock Prescaler */
- #define AT91_PMC_PRES_1 (0 << 2)
- #define AT91_PMC_PRES_2 (1 << 2)
-@@ -89,12 +90,25 @@
- #define AT91SAM9_PMC_MDIV_1 (0 << 8) /* [SAM9,CAP9 only] */
- #define AT91SAM9_PMC_MDIV_2 (1 << 8)
- #define AT91SAM9_PMC_MDIV_4 (2 << 8)
--#define AT91SAM9_PMC_MDIV_6 (3 << 8)
-+#define AT91SAM9_PMC_MDIV_6 (3 << 8) /* [some SAM9 only] */
-+#define AT91SAM9_PMC_MDIV_3 (3 << 8) /* [some SAM9 only] */
- #define AT91_PMC_PDIV (1 << 12) /* Processor Clock Division [some SAM9 only] */
- #define AT91_PMC_PDIV_1 (0 << 12)
- #define AT91_PMC_PDIV_2 (1 << 12)
--
--#define AT91_PMC_PCKR(n) (AT91_PMC + 0x40 + ((n) * 4)) /* Programmable Clock 0-4 Registers */
-+#define AT91_PMC_PLLADIV2 (1 << 12) /* PLLA divisor by 2 [some SAM9 only] */
-+#define AT91_PMC_PLLADIV2_OFF (0 << 12)
-+#define AT91_PMC_PLLADIV2_ON (1 << 12)
-+
-+#define AT91_PMC_USB (AT91_PMC + 0x38) /* USB Clock Register [some SAM9 only] */
-+#define AT91_PMC_USBS (0x1 << 0) /* USB OHCI Input clock selection */
-+#define AT91_PMC_USBS_PLLA (0 << 0)
-+#define AT91_PMC_USBS_UPLL (1 << 0)
-+#define AT91_PMC_OHCIUSBDIV (0xF << 8) /* Divider for USB OHCI Clock */
-+
-+#define AT91_PMC_PCKR(n) (AT91_PMC + 0x40 + ((n) * 4)) /* Programmable Clock 0-N Registers */
-+#define AT91_PMC_CSSMCK (0x1 << 8) /* CSS or Master Clock Selection */
-+#define AT91_PMC_CSSMCK_CSS (0 << 8)
-+#define AT91_PMC_CSSMCK_MCK (1 << 8)
-
- #define AT91_PMC_IER (AT91_PMC + 0x60) /* Interrupt Enable Register */
- #define AT91_PMC_IDR (AT91_PMC + 0x64) /* Interrupt Disable Register */
-@@ -103,7 +117,7 @@
- #define AT91_PMC_LOCKA (1 << 1) /* PLLA Lock */
- #define AT91_PMC_LOCKB (1 << 2) /* PLLB Lock */
- #define AT91_PMC_MCKRDY (1 << 3) /* Master Clock */
--#define AT91_PMC_LOCKU (1 << 6) /* UPLL Lock [AT91CAP9 only] */
-+#define AT91_PMC_LOCKU (1 << 6) /* UPLL Lock [some SAM9, AT91CAP9 only] */
- #define AT91_PMC_OSCSEL (1 << 7) /* Slow Clock Oscillator [AT91CAP9 revC only] */
- #define AT91_PMC_PCK0RDY (1 << 8) /* Programmable Clock 0 */
- #define AT91_PMC_PCK1RDY (1 << 9) /* Programmable Clock 1 */
-Index: linux-2.6.30/drivers/serial/atmel_serial.c
-===================================================================
---- linux-2.6.30.orig/drivers/serial/atmel_serial.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/serial/atmel_serial.c 2011-02-01 16:40:30.133004041 +0100
-@@ -1104,11 +1104,13 @@
- /* update the per-port timeout */
- uart_update_timeout(port, termios->c_cflag, baud);
-
-- /* save/disable interrupts and drain transmitter */
-+ /*
-+ * save/disable interrupts. The tty layer will ensure that the
-+ * transmitter is empty if requested by the caller, so there's
-+ * no need to wait for it here.
-+ */
- imr = UART_GET_IMR(port);
- UART_PUT_IDR(port, -1);
-- while (!(UART_GET_CSR(port) & ATMEL_US_TXEMPTY))
-- cpu_relax();
-
- /* disable receiver and transmitter */
- UART_PUT_CR(port, ATMEL_US_TXDIS | ATMEL_US_RXDIS);
-Index: linux-2.6.30/drivers/usb/gadget/atmel_usba_udc.c
-===================================================================
---- linux-2.6.30.orig/drivers/usb/gadget/atmel_usba_udc.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/usb/gadget/atmel_usba_udc.c 2011-02-01 16:40:30.137041993 +0100
-@@ -326,13 +326,7 @@
- return 1;
- }
-
--#if defined(CONFIG_AVR32)
--
--static void toggle_bias(int is_on)
--{
--}
--
--#elif defined(CONFIG_ARCH_AT91)
-+#if defined(CONFIG_ARCH_AT91SAM9RL)
-
- #include <mach/at91_pmc.h>
-
-@@ -346,7 +340,13 @@
- at91_sys_write(AT91_CKGR_UCKR, uckr & ~(AT91_PMC_BIASEN));
- }
-
--#endif /* CONFIG_ARCH_AT91 */
-+#else
-+
-+static void toggle_bias(int is_on)
-+{
-+}
-+
-+#endif /* CONFIG_ARCH_AT91SAM9RL */
-
- static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req)
- {
-Index: linux-2.6.30/drivers/net/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/net/Kconfig 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/net/Kconfig 2011-02-01 16:40:30.141043034 +0100
-@@ -219,7 +219,7 @@
-
- config MACB
- tristate "Atmel MACB support"
-- depends on AVR32 || ARCH_AT91SAM9260 || ARCH_AT91SAM9263 || ARCH_AT91SAM9G20 || ARCH_AT91CAP9 || ARCH_AT572D940HF
-+ depends on AVR32 || ARCH_AT91SAM9260 || ARCH_AT91SAM9263 || ARCH_AT91SAM9G20 || ARCH_AT91SAM9G45 || ARCH_AT91CAP9 || ARCH_AT572D940HF
- select PHYLIB
- help
- The Atmel MACB ethernet interface is found on many AT32 and AT91
-@@ -228,6 +228,12 @@
- To compile this driver as a module, choose M here: the module
- will be called macb.
-
-+config MACB_TX_SRAM
-+ bool "Atmel MACB TX buffers in internal SRAM"
-+ depends on NET_ETHERNET && MACB && (ARCH_AT91SAM9260 || ARCH_AT91SAM9263)
-+ help
-+ Use internal SRAM for TX buffers.
-+
- source "drivers/net/arm/Kconfig"
-
- config AX88796
-Index: linux-2.6.30/drivers/net/macb.c
-===================================================================
---- linux-2.6.30.orig/drivers/net/macb.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/net/macb.c 2011-02-01 16:40:30.169008345 +0100
-@@ -33,9 +33,21 @@
- /* Make the IP header word-aligned (the ethernet header is 14 bytes) */
- #define RX_OFFSET 2
-
--#define TX_RING_SIZE 128
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+ #if defined(CONFIG_ARCH_AT91SAM9260)
-+ #define TX_RING_SIZE 2
-+ #elif defined(CONFIG_ARCH_AT91SAM9263)
-+ #define TX_RING_SIZE 32
-+ #endif
-+ #define TX_BUFFER_SIZE 1536
-+ #define TX_RING_BYTES (sizeof(struct dma_desc) * TX_RING_SIZE)
-+ #define TX_DMA_SIZE ((TX_RING_BYTES) + (TX_RING_SIZE) * (TX_BUFFER_SIZE))
-+#else
-+ #define TX_RING_SIZE 128
-+ #define TX_RING_BYTES (sizeof(struct dma_desc) * TX_RING_SIZE)
-+#endif
-+
- #define DEF_TX_RING_PENDING (TX_RING_SIZE - 1)
--#define TX_RING_BYTES (sizeof(struct dma_desc) * TX_RING_SIZE)
-
- #define TX_RING_GAP(bp) \
- (TX_RING_SIZE - (bp)->tx_pending)
-@@ -378,8 +390,10 @@
-
- dev_dbg(&bp->pdev->dev, "skb %u (data %p) TX complete\n",
- tail, skb->data);
-+#if !defined(CONFIG_MACB_TX_SRAM)
- dma_unmap_single(&bp->pdev->dev, rp->mapping, skb->len,
- DMA_TO_DEVICE);
-+#endif
- bp->stats.tx_packets++;
- bp->stats.tx_bytes += skb->len;
- rp->skb = NULL;
-@@ -635,8 +649,13 @@
-
- entry = bp->tx_head;
- dev_dbg(&bp->pdev->dev, "Allocated ring entry %u\n", entry);
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+ mapping = bp->tx_ring[entry].addr;
-+ memcpy(bp->tx_buffers + entry * TX_BUFFER_SIZE, skb->data, len);
-+#else
- mapping = dma_map_single(&bp->pdev->dev, skb->data,
- len, DMA_TO_DEVICE);
-+#endif
- bp->tx_skb[entry].skb = skb;
- bp->tx_skb[entry].mapping = mapping;
- dev_dbg(&bp->pdev->dev, "Mapped skb data %p to DMA addr %08lx\n",
-@@ -647,7 +666,9 @@
- if (entry == (TX_RING_SIZE - 1))
- ctrl |= MACB_BIT(TX_WRAP);
-
-+#if !defined(CONFIG_MACB_TX_SRAM)
- bp->tx_ring[entry].addr = mapping;
-+#endif
- bp->tx_ring[entry].ctrl = ctrl;
- wmb();
-
-@@ -678,8 +699,12 @@
- bp->rx_ring = NULL;
- }
- if (bp->tx_ring) {
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+ iounmap((void *)bp->tx_ring);
-+#else
- dma_free_coherent(&bp->pdev->dev, TX_RING_BYTES,
- bp->tx_ring, bp->tx_ring_dma);
-+#endif
- bp->tx_ring = NULL;
- }
- if (bp->rx_buffers) {
-@@ -688,6 +713,11 @@
- bp->rx_buffers, bp->rx_buffers_dma);
- bp->rx_buffers = NULL;
- }
-+
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+ if (bp->tx_ring_dma)
-+ release_mem_region(bp->tx_ring_dma, TX_DMA_SIZE);
-+#endif
- }
-
- static int macb_alloc_consistent(struct macb *bp)
-@@ -708,14 +738,45 @@
- "Allocated RX ring of %d bytes at %08lx (mapped %p)\n",
- size, (unsigned long)bp->rx_ring_dma, bp->rx_ring);
-
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+#if defined(CONFIG_ARCH_AT91SAM9260)
-+ if (!cpu_is_at91sam9xe()
-+ && request_mem_region(AT91SAM9260_SRAM0_BASE, TX_DMA_SIZE, "macb")) {
-+ bp->tx_ring_dma = AT91SAM9260_SRAM0_BASE;
-+ } else {
-+ if (request_mem_region(AT91SAM9260_SRAM1_BASE, TX_DMA_SIZE, "macb")) {
-+ bp->tx_ring_dma = AT91SAM9260_SRAM1_BASE;
-+ } else {
-+ printk(KERN_WARNING "Cannot request SRAM memory for TX ring, already used\n");
-+ return -EBUSY;
-+ }
-+ }
-+#elif defined(CONFIG_ARCH_AT91SAM9263)
-+ if (request_mem_region(AT91SAM9263_SRAM0_BASE, TX_DMA_SIZE, "macb")) {
-+ bp->tx_ring_dma = AT91SAM9263_SRAM0_BASE;
-+ } else {
-+ printk(KERN_WARNING "Cannot request SRAM memory for TX ring, already used\n");
-+ return -EBUSY;
-+ }
-+#endif
-+
-+ bp->tx_ring = ioremap(bp->tx_ring_dma, TX_DMA_SIZE);
-+ if (!bp->tx_ring)
-+ return -ENOMEM;
-+
-+ bp->tx_buffers_dma = bp->tx_ring_dma + TX_RING_BYTES;
-+ bp->tx_buffers = (char *) bp->tx_ring + TX_RING_BYTES;
-+#else
- size = TX_RING_BYTES;
- bp->tx_ring = dma_alloc_coherent(&bp->pdev->dev, size,
- &bp->tx_ring_dma, GFP_KERNEL);
- if (!bp->tx_ring)
- goto out_err;
-+
- dev_dbg(&bp->pdev->dev,
- "Allocated TX ring of %d bytes at %08lx (mapped %p)\n",
- size, (unsigned long)bp->tx_ring_dma, bp->tx_ring);
-+#endif
-
- size = RX_RING_SIZE * RX_BUFFER_SIZE;
- bp->rx_buffers = dma_alloc_coherent(&bp->pdev->dev, size,
-@@ -746,10 +807,18 @@
- }
- bp->rx_ring[RX_RING_SIZE - 1].addr |= MACB_BIT(RX_WRAP);
-
-+#if defined(CONFIG_ARCH_AT91) && defined(CONFIG_MACB_TX_SRAM)
-+ for (i = 0; i < TX_RING_SIZE; i++) {
-+ bp->tx_ring[i].addr = bp->tx_buffers_dma + i * TX_BUFFER_SIZE;
-+ bp->tx_ring[i].ctrl = MACB_BIT(TX_USED);
-+ }
-+#else
- for (i = 0; i < TX_RING_SIZE; i++) {
- bp->tx_ring[i].addr = 0;
- bp->tx_ring[i].ctrl = MACB_BIT(TX_USED);
- }
-+#endif
-+
- bp->tx_ring[TX_RING_SIZE - 1].ctrl |= MACB_BIT(TX_WRAP);
-
- bp->rx_tail = bp->tx_head = bp->tx_tail = 0;
-Index: linux-2.6.30/drivers/net/macb.h
-===================================================================
---- linux-2.6.30.orig/drivers/net/macb.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/net/macb.h 2011-02-01 16:40:30.137041993 +0100
-@@ -369,8 +369,13 @@
- struct dma_desc *tx_ring;
- struct ring_info *tx_skb;
-
-+#if defined(CONFIG_ARCH_AT91)
-+ void *tx_buffers;
-+#endif
-+
- spinlock_t lock;
- struct platform_device *pdev;
-+ struct clk *macb_clk;
- struct clk *pclk;
- struct clk *hclk;
- struct net_device *dev;
-@@ -382,6 +387,10 @@
- dma_addr_t tx_ring_dma;
- dma_addr_t rx_buffers_dma;
-
-+#if defined(CONFIG_ARCH_AT91)
-+ dma_addr_t tx_buffers_dma;
-+#endif
-+
- unsigned int rx_pending, tx_pending;
-
- struct mii_bus *mii_bus;
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9g45.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9g45.h 2011-02-01 16:40:30.141043034 +0100
-@@ -0,0 +1,155 @@
-+/*
-+ * Chip-specific header file for the AT91SAM9G45 family
-+ *
-+ * Copyright (C) 2008-2009 Atmel Corporation.
-+ *
-+ * Common definitions.
-+ * Based on AT91SAM9G45 preliminary datasheet.
-+ *
-+ * 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.
-+ */
-+
-+#ifndef AT91SAM9G45_H
-+#define AT91SAM9G45_H
-+
-+/*
-+ * Peripheral identifiers/interrupts.
-+ */
-+#define AT91_ID_FIQ 0 /* Advanced Interrupt Controller (FIQ) */
-+#define AT91_ID_SYS 1 /* System Controller Interrupt */
-+#define AT91SAM9G45_ID_PIOA 2 /* Parallel I/O Controller A */
-+#define AT91SAM9G45_ID_PIOB 3 /* Parallel I/O Controller B */
-+#define AT91SAM9G45_ID_PIOC 4 /* Parallel I/O Controller C */
-+#define AT91SAM9G45_ID_PIODE 5 /* Parallel I/O Controller D and E */
-+#define AT91SAM9G45_ID_TRNG 6 /* True Random Number Generator */
-+#define AT91SAM9G45_ID_US0 7 /* USART 0 */
-+#define AT91SAM9G45_ID_US1 8 /* USART 1 */
-+#define AT91SAM9G45_ID_US2 9 /* USART 2 */
-+#define AT91SAM9G45_ID_US3 10 /* USART 3 */
-+#define AT91SAM9G45_ID_MCI0 11 /* High Speed Multimedia Card Interface 0 */
-+#define AT91SAM9G45_ID_TWI0 12 /* Two-Wire Interface 0 */
-+#define AT91SAM9G45_ID_TWI1 13 /* Two-Wire Interface 1 */
-+#define AT91SAM9G45_ID_SPI0 14 /* Serial Peripheral Interface 0 */
-+#define AT91SAM9G45_ID_SPI1 15 /* Serial Peripheral Interface 1 */
-+#define AT91SAM9G45_ID_SSC0 16 /* Synchronous Serial Controller 0 */
-+#define AT91SAM9G45_ID_SSC1 17 /* Synchronous Serial Controller 1 */
-+#define AT91SAM9G45_ID_TCB 18 /* Timer Counter 0, 1, 2, 3, 4 and 5 */
-+#define AT91SAM9G45_ID_PWMC 19 /* Pulse Width Modulation Controller */
-+#define AT91SAM9G45_ID_TSC 20 /* Touch Screen ADC Controller */
-+#define AT91SAM9G45_ID_DMA 21 /* DMA Controller */
-+#define AT91SAM9G45_ID_UHPHS 22 /* USB Host High Speed */
-+#define AT91SAM9G45_ID_LCDC 23 /* LCD Controller */
-+#define AT91SAM9G45_ID_AC97C 24 /* AC97 Controller */
-+#define AT91SAM9G45_ID_EMAC 25 /* Ethernet MAC */
-+#define AT91SAM9G45_ID_ISI 26 /* Image Sensor Interface */
-+#define AT91SAM9G45_ID_UDPHS 27 /* USB Device High Speed */
-+#define AT91SAM9G45_ID_AESTDESSHA 28 /* AES + T-DES + SHA */
-+#define AT91SAM9G45_ID_MCI1 29 /* High Speed Multimedia Card Interface 1 */
-+#define AT91SAM9G45_ID_VDEC 30 /* Video Decoder */
-+#define AT91SAM9G45_ID_IRQ0 31 /* Advanced Interrupt Controller */
-+
-+/*
-+ * User Peripheral physical base addresses.
-+ */
-+#define AT91SAM9G45_BASE_UDPHS 0xfff78000
-+#define AT91SAM9G45_BASE_TCB0 0xfff7c000
-+#define AT91SAM9G45_BASE_TC0 0xfff7c000
-+#define AT91SAM9G45_BASE_TC1 0xfff7c040
-+#define AT91SAM9G45_BASE_TC2 0xfff7c080
-+#define AT91SAM9G45_BASE_MCI0 0xfff80000
-+#define AT91SAM9G45_BASE_TWI0 0xfff84000
-+#define AT91SAM9G45_BASE_TWI1 0xfff88000
-+#define AT91SAM9G45_BASE_US0 0xfff8c000
-+#define AT91SAM9G45_BASE_US1 0xfff90000
-+#define AT91SAM9G45_BASE_US2 0xfff94000
-+#define AT91SAM9G45_BASE_US3 0xfff98000
-+#define AT91SAM9G45_BASE_SSC0 0xfff9c000
-+#define AT91SAM9G45_BASE_SSC1 0xfffa0000
-+#define AT91SAM9G45_BASE_SPI0 0xfffa4000
-+#define AT91SAM9G45_BASE_SPI1 0xfffa8000
-+#define AT91SAM9G45_BASE_AC97C 0xfffac000
-+#define AT91SAM9G45_BASE_TSC 0xfffb0000
-+#define AT91SAM9G45_BASE_ISI 0xfffb4000
-+#define AT91SAM9G45_BASE_PWMC 0xfffb8000
-+#define AT91SAM9G45_BASE_EMAC 0xfffbc000
-+#define AT91SAM9G45_BASE_AES 0xfffc0000
-+#define AT91SAM9G45_BASE_TDES 0xfffc4000
-+#define AT91SAM9G45_BASE_SHA 0xfffc8000
-+#define AT91SAM9G45_BASE_TRNG 0xfffcc000
-+#define AT91SAM9G45_BASE_MCI1 0xfffd0000
-+#define AT91SAM9G45_BASE_TCB1 0xfffd4000
-+#define AT91SAM9G45_BASE_TC3 0xfffd4000
-+#define AT91SAM9G45_BASE_TC4 0xfffd4040
-+#define AT91SAM9G45_BASE_TC5 0xfffd4080
-+#define AT91_BASE_SYS 0xffffe200
-+
-+/*
-+ * System Peripherals (offset from AT91_BASE_SYS)
-+ */
-+#define AT91_ECC (0xffffe200 - AT91_BASE_SYS)
-+#define AT91_DDRSDRC1 (0xffffe400 - AT91_BASE_SYS)
-+#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)
-+#define AT91_SMC (0xffffe800 - AT91_BASE_SYS)
-+#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)
-+#define AT91_DMA (0xffffec00 - AT91_BASE_SYS)
-+#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS)
-+#define AT91_AIC (0xfffff000 - AT91_BASE_SYS)
-+#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS)
-+#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS)
-+#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS)
-+#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS)
-+#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS)
-+#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
-+#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
-+#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS)
-+#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS)
-+#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS)
-+#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS)
-+#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
-+#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS)
-+
-+#define AT91_USART0 AT91SAM9G45_BASE_US0
-+#define AT91_USART1 AT91SAM9G45_BASE_US1
-+#define AT91_USART2 AT91SAM9G45_BASE_US2
-+#define AT91_USART3 AT91SAM9G45_BASE_US3
-+
-+/*
-+ * Internal Memory.
-+ */
-+#define AT91SAM9G45_SRAM_BASE 0x00300000 /* Internal SRAM base address */
-+#define AT91SAM9G45_SRAM_SIZE SZ_64K /* Internal SRAM size (64Kb) */
-+
-+#define AT91SAM9G45_ROM_BASE 0x00400000 /* Internal ROM base address */
-+#define AT91SAM9G45_ROM_SIZE SZ_64K /* Internal ROM size (64Kb) */
-+
-+#define AT91SAM9G45_LCDC_BASE 0x00500000 /* LCD Controller */
-+#define AT91SAM9G45_UDPHS_FIFO 0x00600000 /* USB Device HS controller */
-+#define AT91SAM9G45_OHCI_BASE 0x00700000 /* USB Host controller (OHCI) */
-+#define AT91SAM9G45_EHCI_BASE 0x00800000 /* USB Host controller (EHCI) */
-+#define AT91SAM9G45_VDEC_BASE 0x00900000 /* Video Decoder Controller */
-+
-+#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
-+
-+#define CONSISTENT_DMA_SIZE SZ_4M
-+
-+/*
-+ * DMA peripheral identifiers
-+ * for hardware handshaking interface
-+ */
-+#define AT_DMA_ID_MCI0 0
-+#define AT_DMA_ID_SPI0_TX 1
-+#define AT_DMA_ID_SPI0_RX 2
-+#define AT_DMA_ID_SPI1_TX 3
-+#define AT_DMA_ID_SPI1_RX 4
-+#define AT_DMA_ID_SSC0_TX 5
-+#define AT_DMA_ID_SSC0_RX 6
-+#define AT_DMA_ID_SSC1_TX 7
-+#define AT_DMA_ID_SSC1_RX 8
-+#define AT_DMA_ID_AC97_TX 9
-+#define AT_DMA_ID_AC97_RX 10
-+#define AT_DMA_ID_MCI1 13
-+
-+#endif
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h 2011-02-01 16:40:30.137041993 +0100
-@@ -0,0 +1,153 @@
-+/*
-+ * Matrix-centric header file for the AT91SAM9G45 family
-+ *
-+ * Copyright (C) 2008-2009 Atmel Corporation.
-+ *
-+ * Memory Controllers (MATRIX, EBI) - System peripherals registers.
-+ * Based on AT91SAM9G45 preliminary datasheet.
-+ *
-+ * 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.
-+ */
-+
-+#ifndef AT91SAM9G45_MATRIX_H
-+#define AT91SAM9G45_MATRIX_H
-+
-+#define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */
-+#define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */
-+#define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */
-+#define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */
-+#define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */
-+#define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */
-+#define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */
-+#define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */
-+#define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */
-+#define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */
-+#define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */
-+#define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */
-+#define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */
-+#define AT91_MATRIX_ULBT_INFINITE (0 << 0)
-+#define AT91_MATRIX_ULBT_SINGLE (1 << 0)
-+#define AT91_MATRIX_ULBT_FOUR (2 << 0)
-+#define AT91_MATRIX_ULBT_EIGHT (3 << 0)
-+#define AT91_MATRIX_ULBT_SIXTEEN (4 << 0)
-+#define AT91_MATRIX_ULBT_THIRTYTWO (5 << 0)
-+#define AT91_MATRIX_ULBT_SIXTYFOUR (6 << 0)
-+#define AT91_MATRIX_ULBT_128 (7 << 0)
-+
-+#define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */
-+#define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */
-+#define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */
-+#define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */
-+#define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */
-+#define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */
-+#define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */
-+#define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */
-+#define AT91_MATRIX_SLOT_CYCLE (0x1ff << 0) /* Maximum Number of Allowed Cycles for a Burst */
-+#define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */
-+#define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16)
-+#define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16)
-+#define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16)
-+#define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */
-+
-+#define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */
-+#define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */
-+#define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */
-+#define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */
-+#define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */
-+#define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */
-+#define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */
-+#define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */
-+#define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */
-+#define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */
-+#define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */
-+#define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */
-+#define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */
-+#define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */
-+#define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */
-+#define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */
-+#define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */
-+#define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */
-+#define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */
-+#define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */
-+#define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */
-+#define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */
-+#define AT91_MATRIX_M6PR (3 << 24) /* Master 6 Priority */
-+#define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */
-+#define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */
-+#define AT91_MATRIX_M9PR (3 << 4) /* Master 9 Priority (in Register B) */
-+#define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */
-+#define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */
-+
-+#define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */
-+#define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */
-+#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */
-+#define AT91_MATRIX_RCB2 (1 << 2)
-+#define AT91_MATRIX_RCB3 (1 << 3)
-+#define AT91_MATRIX_RCB4 (1 << 4)
-+#define AT91_MATRIX_RCB5 (1 << 5)
-+#define AT91_MATRIX_RCB6 (1 << 6)
-+#define AT91_MATRIX_RCB7 (1 << 7)
-+#define AT91_MATRIX_RCB8 (1 << 8)
-+#define AT91_MATRIX_RCB9 (1 << 9)
-+#define AT91_MATRIX_RCB10 (1 << 10)
-+#define AT91_MATRIX_RCB11 (1 << 11)
-+
-+#define AT91_MATRIX_TCMR (AT91_MATRIX + 0x110) /* TCM Configuration Register */
-+#define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */
-+#define AT91_MATRIX_ITCM_0 (0 << 0)
-+#define AT91_MATRIX_ITCM_32 (6 << 0)
-+#define AT91_MATRIX_DTCM_SIZE (0xf << 4) /* Size of DTCM enabled memory block */
-+#define AT91_MATRIX_DTCM_0 (0 << 4)
-+#define AT91_MATRIX_DTCM_32 (6 << 4)
-+#define AT91_MATRIX_DTCM_64 (7 << 4)
-+#define AT91_MATRIX_TCM_NWS (0x1 << 11) /* Wait state TCM register */
-+#define AT91_MATRIX_TCM_NO_WS (0x0 << 11)
-+#define AT91_MATRIX_TCM_ONE_WS (0x1 << 11)
-+
-+#define AT91_MATRIX_VIDEO (AT91_MATRIX + 0x118) /* Video Mode Configuration Register */
-+#define AT91C_VDEC_SEL (0x1 << 0) /* Video Mode Selection */
-+#define AT91C_VDEC_SEL_OFF (0 << 0)
-+#define AT91C_VDEC_SEL_ON (1 << 0)
-+
-+#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x128) /* EBI Chip Select Assignment Register */
-+#define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */
-+#define AT91_MATRIX_EBI_CS1A_SMC (0 << 1)
-+#define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1)
-+#define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */
-+#define AT91_MATRIX_EBI_CS3A_SMC (0 << 3)
-+#define AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA (1 << 3)
-+#define AT91_MATRIX_EBI_CS4A (1 << 4) /* Chip Select 4 Assignment */
-+#define AT91_MATRIX_EBI_CS4A_SMC (0 << 4)
-+#define AT91_MATRIX_EBI_CS4A_SMC_CF0 (1 << 4)
-+#define AT91_MATRIX_EBI_CS5A (1 << 5) /* Chip Select 5 Assignment */
-+#define AT91_MATRIX_EBI_CS5A_SMC (0 << 5)
-+#define AT91_MATRIX_EBI_CS5A_SMC_CF1 (1 << 5)
-+#define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */
-+#define AT91_MATRIX_EBI_DBPU_ON (0 << 8)
-+#define AT91_MATRIX_EBI_DBPU_OFF (1 << 8)
-+#define AT91_MATRIX_EBI_VDDIOMSEL (1 << 16) /* Memory voltage selection */
-+#define AT91_MATRIX_EBI_VDDIOMSEL_1_8V (0 << 16)
-+#define AT91_MATRIX_EBI_VDDIOMSEL_3_3V (1 << 16)
-+#define AT91_MATRIX_EBI_EBI_IOSR (1 << 17) /* EBI I/O slew rate selection */
-+#define AT91_MATRIX_EBI_EBI_IOSR_REDUCED (0 << 17)
-+#define AT91_MATRIX_EBI_EBI_IOSR_NORMAL (1 << 17)
-+#define AT91_MATRIX_EBI_DDR_IOSR (1 << 18) /* DDR2 dedicated port I/O slew rate selection */
-+#define AT91_MATRIX_EBI_DDR_IOSR_REDUCED (0 << 18)
-+#define AT91_MATRIX_EBI_DDR_IOSR_NORMAL (1 << 18)
-+
-+#define AT91_MATRIX_WPMR (AT91_MATRIX + 0x1E4) /* Write Protect Mode Register */
-+#define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */
-+#define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0)
-+#define AT91_MATRIX_WPMR_WP_WPEN (1 << 0)
-+#define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */
-+
-+#define AT91_MATRIX_WPSR (AT91_MATRIX + 0x1E8) /* Write Protect Status Register */
-+#define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */
-+#define AT91_MATRIX_WPSR_NO_WPV (0 << 0)
-+#define AT91_MATRIX_WPSR_WPV (1 << 0)
-+#define AT91_MATRIX_WPSR_WPVSRC (0xFFFF << 8) /* Write Protect Violation Source */
-+
-+#endif
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/cpu.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/cpu.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/cpu.h 2011-02-01 16:40:30.165043750 +0100
-@@ -21,8 +21,12 @@
- #define ARCH_ID_AT91SAM9260 0x019803a0
- #define ARCH_ID_AT91SAM9261 0x019703a0
- #define ARCH_ID_AT91SAM9263 0x019607a0
-+#define ARCH_ID_AT91SAM9G10 0x819903a0
- #define ARCH_ID_AT91SAM9G20 0x019905a0
- #define ARCH_ID_AT91SAM9RL64 0x019b03a0
-+#define ARCH_ID_AT91SAM9G45 0x819b05a0
-+#define ARCH_ID_AT91SAM9G45MRL 0x819b05a2 /* aka 9G45-ES2 & non ES lots */
-+#define ARCH_ID_AT91SAM9G45ES 0x819b05a1 /* 9G45-ES (Engineering Sample) */
- #define ARCH_ID_AT91CAP9 0x039A03A0
-
- #define ARCH_ID_AT91SAM9XE128 0x329973a0
-@@ -41,6 +45,20 @@
- return (at91_sys_read(AT91_DBGU_CIDR) & ~AT91_CIDR_VERSION);
- }
-
-+static inline unsigned long at91_cpu_fully_identify(void)
-+{
-+ return at91_sys_read(AT91_DBGU_CIDR);
-+}
-+
-+#define ARCH_EXID_AT91SAM9M11 0x00000001
-+#define ARCH_EXID_AT91SAM9M10 0x00000002
-+#define ARCH_EXID_AT91SAM9G45 0x00000004
-+
-+static inline unsigned long at91_exid_identify(void)
-+{
-+ return at91_sys_read(AT91_DBGU_EXID);
-+}
-+
-
- #define ARCH_FAMILY_AT91X92 0x09200000
- #define ARCH_FAMILY_AT91SAM9 0x01900000
-@@ -89,6 +107,12 @@
- #define cpu_is_at91sam9261() (0)
- #endif
-
-+#ifdef CONFIG_ARCH_AT91SAM9G10
-+#define cpu_is_at91sam9g10() (at91_cpu_identify() == ARCH_ID_AT91SAM9G10)
-+#else
-+#define cpu_is_at91sam9g10() (0)
-+#endif
-+
- #ifdef CONFIG_ARCH_AT91SAM9263
- #define cpu_is_at91sam9263() (at91_cpu_identify() == ARCH_ID_AT91SAM9263)
- #else
-@@ -101,6 +125,14 @@
- #define cpu_is_at91sam9rl() (0)
- #endif
-
-+#ifdef CONFIG_ARCH_AT91SAM9G45
-+#define cpu_is_at91sam9g45() (at91_cpu_identify() == ARCH_ID_AT91SAM9G45)
-+#define cpu_is_at91sam9g45es() (at91_cpu_fully_identify() == ARCH_ID_AT91SAM9G45ES)
-+#else
-+#define cpu_is_at91sam9g45() (0)
-+#define cpu_is_at91sam9g45es() (0)
-+#endif
-+
- #ifdef CONFIG_ARCH_AT91CAP9
- #define cpu_is_at91cap9() (at91_cpu_identify() == ARCH_ID_AT91CAP9)
- #define cpu_is_at91cap9_revB() (at91cap9_rev_identify() == ARCH_REVISION_CAP9_B)
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/hardware.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/hardware.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/hardware.h 2011-02-01 16:40:30.145073648 +0100
-@@ -20,12 +20,14 @@
- #include <mach/at91rm9200.h>
- #elif defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)
- #include <mach/at91sam9260.h>
--#elif defined(CONFIG_ARCH_AT91SAM9261)
-+#elif defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)
- #include <mach/at91sam9261.h>
- #elif defined(CONFIG_ARCH_AT91SAM9263)
- #include <mach/at91sam9263.h>
- #elif defined(CONFIG_ARCH_AT91SAM9RL)
- #include <mach/at91sam9rl.h>
-+#elif defined(CONFIG_ARCH_AT91SAM9G45)
-+#include <mach/at91sam9g45.h>
- #elif defined(CONFIG_ARCH_AT91CAP9)
- #include <mach/at91cap9.h>
- #elif defined(CONFIG_ARCH_AT91X40)
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/timex.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/timex.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/timex.h 2011-02-01 16:40:30.145073648 +0100
-@@ -42,6 +42,11 @@
- #define AT91SAM9_MASTER_CLOCK 99300000
- #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
-
-+#elif defined(CONFIG_ARCH_AT91SAM9G10)
-+
-+#define AT91SAM9_MASTER_CLOCK 133000000
-+#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
-+
- #elif defined(CONFIG_ARCH_AT91SAM9263)
-
- #if defined(CONFIG_MACH_USB_A9263)
-@@ -66,6 +71,11 @@
- #endif
- #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
-
-+#elif defined(CONFIG_ARCH_AT91SAM9G45)
-+
-+#define AT91SAM9_MASTER_CLOCK 133333333
-+#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
-+
- #elif defined(CONFIG_ARCH_AT91CAP9)
-
- #define AT91CAP9_MASTER_CLOCK 100000000
-Index: linux-2.6.30/arch/arm/mach-at91/Kconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/Kconfig 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/Kconfig 2011-02-01 16:40:30.169008345 +0100
-@@ -23,6 +23,12 @@
- select GENERIC_TIME
- select GENERIC_CLOCKEVENTS
-
-+config ARCH_AT91SAM9G10
-+ bool "AT91SAM9G10"
-+ select CPU_ARM926T
-+ select GENERIC_TIME
-+ select GENERIC_CLOCKEVENTS
-+
- config ARCH_AT91SAM9263
- bool "AT91SAM9263"
- select CPU_ARM926T
-@@ -41,6 +47,12 @@
- select GENERIC_TIME
- select GENERIC_CLOCKEVENTS
-
-+config ARCH_AT91SAM9G45
-+ bool "AT91SAM9G45"
-+ select CPU_ARM926T
-+ select GENERIC_TIME
-+ select GENERIC_CLOCKEVENTS
-+
- config ARCH_AT91CAP9
- bool "AT91CAP9"
- select CPU_ARM926T
-@@ -268,6 +280,21 @@
-
- # ----------------------------------------------------------
-
-+if ARCH_AT91SAM9G10
-+
-+comment "AT91SAM9G10 Board Type"
-+
-+config MACH_AT91SAM9G10EK
-+ bool "Atmel AT91SAM9G10-EK Evaluation Kit"
-+ depends on ARCH_AT91SAM9G10
-+ help
-+ Select this if you are using Atmel's AT91SAM9G10-EK Evaluation Kit.
-+ <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4588>
-+
-+endif
-+
-+# ----------------------------------------------------------
-+
- if ARCH_AT91SAM9263
-
- comment "AT91SAM9263 Board Type"
-@@ -332,7 +359,16 @@
- bool "Atmel AT91SAM9G20-EK Evaluation Kit"
- depends on ARCH_AT91SAM9G20
- help
-- Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit.
-+ Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
-+ that embeds only one SD/MMC slot.
-+
-+config MACH_AT91SAM9G20EK_2MMC
-+ bool "Atmel AT91SAM9G20-EK Evaluation Kit with 2 SD/MMC Slots"
-+ depends on ARCH_AT91SAM9G20
-+ help
-+ Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
-+ with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
-+ onwards.
-
- config MACH_USB_A9G20
- bool "CALAO USB-A9G20"
-@@ -359,6 +395,22 @@
-
- # ----------------------------------------------------------
-
-+if ARCH_AT91SAM9G45
-+
-+comment "AT91SAM9G45 Board Type"
-+
-+config MACH_AT91SAM9G45EKES
-+ bool "Atmel AT91SAM9G45-EKES Evaluation Kit"
-+ depends on ARCH_AT91SAM9G45
-+ help
-+ Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit.
-+ "ES" at the end of the name means that this board is an
-+ Engineering Sample.
-+
-+endif
-+
-+# ----------------------------------------------------------
-+
- if ARCH_AT91CAP9
-
- comment "AT91CAP9 Board Type"
-@@ -409,13 +461,13 @@
-
- config MTD_AT91_DATAFLASH_CARD
- bool "Enable DataFlash Card support"
-- depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926)
-+ depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_ECBAT91 || MACH_SAM9_L9260 || MACH_AT91CAP9ADK || MACH_AT572D940HFEB || MACH_TOTEMNOVA || MACH_NEOCORE926)
- help
- Enable support for the DataFlash card.
-
- config MTD_NAND_ATMEL_BUSWIDTH_16
- bool "Enable 16-bit data bus interface to NAND flash"
-- depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91CAP9ADK || MACH_AT572D940HFEB)
-+ depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK || MACH_AT572D940HFEB)
- help
- On AT91SAM926x boards both types of NAND flash can be present
- (8 and 16 bit data bus width).
-@@ -477,7 +529,7 @@
-
- config AT91_EARLY_USART3
- bool "USART3"
-- depends on (ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
-+ depends on (ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9260 || ARCH_AT91SAM9G20 || ARCH_AT91SAM9G45)
-
- config AT91_EARLY_USART4
- bool "USART4"
-Index: linux-2.6.30/arch/arm/mach-at91/Makefile
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/Makefile 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/Makefile 2011-02-01 16:40:30.152108635 +0100
-@@ -13,9 +13,11 @@
- obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
- obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
-+obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
-+ obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o
- obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
-@@ -49,6 +51,7 @@
-
- # AT91SAM9261 board-specific support
- obj-$(CONFIG_MACH_AT91SAM9261EK) += board-sam9261ek.o
-+obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
-
- # AT91SAM9263 board-specific support
- obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
-@@ -62,10 +65,14 @@
-
- # AT91SAM9G20 board-specific support
- obj-$(CONFIG_MACH_AT91SAM9G20EK) += board-sam9g20ek.o
-+obj-$(CONFIG_MACH_AT91SAM9G20EK_2MMC) += board-sam9g20ek-2slot-mmc.o
- obj-$(CONFIG_MACH_USB_A9G20) += board-usb-a9g20.o
- obj-$(CONFIG_MACH_QIL_A9G20) += board-qil-a9g20.o
- obj-$(CONFIG_MACH_SBC35_A9G20) += board-sbc35-a9g20.o
-
-+# AT91SAM9G45 board-specific support
-+obj-$(CONFIG_MACH_AT91SAM9G45EKES) += board-sam9m10g45ek.o
-+
- # AT91CAP9 board-specific support
- obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o
-
-Index: linux-2.6.30/arch/arm/mach-at91/Makefile.boot
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/Makefile.boot 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/Makefile.boot 2011-02-01 16:40:30.137041993 +0100
-@@ -7,6 +7,10 @@
- zreladdr-y := 0x70008000
- params_phys-y := 0x70000100
- initrd_phys-y := 0x70410000
-+else ifeq ($(CONFIG_ARCH_AT91SAM9G45),y)
-+ zreladdr-y := 0x70008000
-+params_phys-y := 0x70000100
-+initrd_phys-y := 0x70410000
- else
- zreladdr-y := 0x20008000
- params_phys-y := 0x20000100
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9g45.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9g45.c 2011-02-01 16:40:30.137041993 +0100
-@@ -0,0 +1,360 @@
-+/*
-+ * Chip-specific setup code for the AT91SAM9G45 family
-+ *
-+ * Copyright (C) 2009 Atmel Corporation.
-+ *
-+ * 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.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/pm.h>
-+
-+#include <asm/irq.h>
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <mach/at91sam9g45.h>
-+#include <mach/at91_pmc.h>
-+#include <mach/at91_rstc.h>
-+#include <mach/at91_shdwc.h>
-+
-+#include "generic.h"
-+#include "clock.h"
-+
-+static struct map_desc at91sam9g45_io_desc[] __initdata = {
-+ {
-+ .virtual = AT91_VA_BASE_SYS,
-+ .pfn = __phys_to_pfn(AT91_BASE_SYS),
-+ .length = SZ_16K,
-+ .type = MT_DEVICE,
-+ }, {
-+ .virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE,
-+ .pfn = __phys_to_pfn(AT91SAM9G45_SRAM_BASE),
-+ .length = AT91SAM9G45_SRAM_SIZE,
-+ .type = MT_DEVICE,
-+ }
-+};
-+
-+/* --------------------------------------------------------------------
-+ * Clocks
-+ * -------------------------------------------------------------------- */
-+
-+/*
-+ * The peripheral clocks.
-+ */
-+static struct clk pioA_clk = {
-+ .name = "pioA_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_PIOA,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk pioB_clk = {
-+ .name = "pioB_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_PIOB,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk pioC_clk = {
-+ .name = "pioC_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_PIOC,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk pioDE_clk = {
-+ .name = "pioDE_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_PIODE,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk usart0_clk = {
-+ .name = "usart0_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_US0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk usart1_clk = {
-+ .name = "usart1_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_US1,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk usart2_clk = {
-+ .name = "usart2_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_US2,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk usart3_clk = {
-+ .name = "usart3_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_US3,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk mmc0_clk = {
-+ .name = "mci0_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_MCI0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk twi0_clk = {
-+ .name = "twi0_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_TWI0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk twi1_clk = {
-+ .name = "twi1_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_TWI1,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk spi0_clk = {
-+ .name = "spi0_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_SPI0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk spi1_clk = {
-+ .name = "spi1_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_SPI1,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk ssc0_clk = {
-+ .name = "ssc0_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_SSC0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk ssc1_clk = {
-+ .name = "ssc1_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_SSC1,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk tcb_clk = {
-+ .name = "tcb_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_TCB,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk pwm_clk = {
-+ .name = "pwm_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_PWMC,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk tsc_clk = {
-+ .name = "tsc_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_TSC,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk dma_clk = {
-+ .name = "dma_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_DMA,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk uhphs_clk = {
-+ .name = "uhphs_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_UHPHS,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk lcdc_clk = {
-+ .name = "lcdc_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_LCDC,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk ac97_clk = {
-+ .name = "ac97_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_AC97C,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk macb_clk = {
-+ .name = "macb_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_EMAC,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk isi_clk = {
-+ .name = "isi_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_ISI,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk udphs_clk = {
-+ .name = "udphs_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_UDPHS,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+static struct clk mmc1_clk = {
-+ .name = "mci1_clk",
-+ .pmc_mask = 1 << AT91SAM9G45_ID_MCI1,
-+ .type = CLK_TYPE_PERIPHERAL,
-+};
-+
-+/* One additional fake clock for ohci */
-+static struct clk ohci_clk = {
-+ .name = "ohci_clk",
-+ .pmc_mask = 0,
-+ .type = CLK_TYPE_PERIPHERAL,
-+ .parent = &uhphs_clk,
-+};
-+
-+static struct clk *periph_clocks[] __initdata = {
-+ &pioA_clk,
-+ &pioB_clk,
-+ &pioC_clk,
-+ &pioDE_clk,
-+ &usart0_clk,
-+ &usart1_clk,
-+ &usart2_clk,
-+ &usart3_clk,
-+ &mmc0_clk,
-+ &twi0_clk,
-+ &twi1_clk,
-+ &spi0_clk,
-+ &spi1_clk,
-+ &ssc0_clk,
-+ &ssc1_clk,
-+ &tcb_clk,
-+ &pwm_clk,
-+ &tsc_clk,
-+ &dma_clk,
-+ &uhphs_clk,
-+ &lcdc_clk,
-+ &ac97_clk,
-+ &macb_clk,
-+ &isi_clk,
-+ &udphs_clk,
-+ &mmc1_clk,
-+ // irq0
-+ &ohci_clk,
-+};
-+
-+/*
-+ * The two programmable clocks.
-+ * You must configure pin multiplexing to bring these signals out.
-+ */
-+static struct clk pck0 = {
-+ .name = "pck0",
-+ .pmc_mask = AT91_PMC_PCK0,
-+ .type = CLK_TYPE_PROGRAMMABLE,
-+ .id = 0,
-+};
-+static struct clk pck1 = {
-+ .name = "pck1",
-+ .pmc_mask = AT91_PMC_PCK1,
-+ .type = CLK_TYPE_PROGRAMMABLE,
-+ .id = 1,
-+};
-+
-+static void __init at91sam9g45_register_clocks(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(periph_clocks); i++)
-+ clk_register(periph_clocks[i]);
-+
-+ clk_register(&pck0);
-+ clk_register(&pck1);
-+}
-+
-+/* --------------------------------------------------------------------
-+ * GPIO
-+ * -------------------------------------------------------------------- */
-+
-+static struct at91_gpio_bank at91sam9g45_gpio[] = {
-+ {
-+ .id = AT91SAM9G45_ID_PIOA,
-+ .offset = AT91_PIOA,
-+ .clock = &pioA_clk,
-+ }, {
-+ .id = AT91SAM9G45_ID_PIOB,
-+ .offset = AT91_PIOB,
-+ .clock = &pioB_clk,
-+ }, {
-+ .id = AT91SAM9G45_ID_PIOC,
-+ .offset = AT91_PIOC,
-+ .clock = &pioC_clk,
-+ }, {
-+ .id = AT91SAM9G45_ID_PIODE,
-+ .offset = AT91_PIOD,
-+ .clock = &pioDE_clk,
-+ }, {
-+ .id = AT91SAM9G45_ID_PIODE,
-+ .offset = AT91_PIOE,
-+ .clock = &pioDE_clk,
-+ }
-+};
-+
-+static void at91sam9g45_reset(void)
-+{
-+ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
-+}
-+
-+static void at91sam9g45_poweroff(void)
-+{
-+ at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW);
-+}
-+
-+
-+/* --------------------------------------------------------------------
-+ * AT91SAM9G45 processor initialization
-+ * -------------------------------------------------------------------- */
-+
-+void __init at91sam9g45_initialize(unsigned long main_clock)
-+{
-+ /* Map peripherals */
-+ iotable_init(at91sam9g45_io_desc, ARRAY_SIZE(at91sam9g45_io_desc));
-+
-+ at91_arch_reset = at91sam9g45_reset;
-+ pm_power_off = at91sam9g45_poweroff;
-+ at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0);
-+
-+ /* Init clock subsystem */
-+ at91_clock_init(main_clock);
-+
-+ /* Register the processor-specific clocks */
-+ at91sam9g45_register_clocks();
-+
-+ /* Register GPIO subsystem */
-+ at91_gpio_init(at91sam9g45_gpio, 5);
-+}
-+
-+/* --------------------------------------------------------------------
-+ * Interrupt initialization
-+ * -------------------------------------------------------------------- */
-+
-+/*
-+ * The default interrupt priority levels (0 = lowest, 7 = highest).
-+ */
-+static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = {
-+ 7, /* Advanced Interrupt Controller (FIQ) */
-+ 7, /* System Peripherals */
-+ 1, /* Parallel IO Controller A */
-+ 1, /* Parallel IO Controller B */
-+ 1, /* Parallel IO Controller C */
-+ 1, /* Parallel IO Controller D and E */
-+ 0,
-+ 5, /* USART 0 */
-+ 5, /* USART 1 */
-+ 5, /* USART 2 */
-+ 5, /* USART 3 */
-+ 0, /* Multimedia Card Interface 0 */
-+ 6, /* Two-Wire Interface 0 */
-+ 6, /* Two-Wire Interface 1 */
-+ 5, /* Serial Peripheral Interface 0 */
-+ 5, /* Serial Peripheral Interface 1 */
-+ 4, /* Serial Synchronous Controller 0 */
-+ 4, /* Serial Synchronous Controller 1 */
-+ 0, /* Timer Counter 0, 1, 2, 3, 4 and 5 */
-+ 0, /* Pulse Width Modulation Controller */
-+ 0, /* Touch Screen Controller */
-+ 0, /* DMA Controller */
-+ 2, /* USB Host High Speed port */
-+ 3, /* LDC Controller */
-+ 5, /* AC97 Controller */
-+ 3, /* Ethernet */
-+ 0, /* Image Sensor Interface */
-+ 2, /* USB Device High speed port */
-+ 0,
-+ 0, /* Multimedia Card Interface 1 */
-+ 0,
-+ 0, /* Advanced Interrupt Controller (IRQ0) */
-+};
-+
-+void __init at91sam9g45_init_interrupts(unsigned int priority[NR_AIC_IRQS])
-+{
-+ if (!priority)
-+ priority = at91sam9g45_default_irq_priority;
-+
-+ /* Initialize the AIC interrupt controller */
-+ at91_aic_init(priority);
-+
-+ /* Enable GPIO interrupts */
-+ at91_gpio_irq_setup();
-+}
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9g45_devices.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9g45_devices.c 2011-02-01 16:40:30.165043750 +0100
-@@ -0,0 +1,1600 @@
-+/*
-+ * On-Chip devices setup code for the AT91SAM9G45 family
-+ *
-+ * Copyright (C) 2009 Atmel Corporation.
-+ *
-+ * 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.
-+ *
-+ */
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+
-+#include <linux/dma-mapping.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c-gpio.h>
-+#include <linux/atmel-mci.h>
-+
-+#include <linux/fb.h>
-+#include <video/atmel_lcdc.h>
-+
-+#include <mach/board.h>
-+#include <mach/gpio.h>
-+#include <mach/at91sam9g45.h>
-+#include <mach/at91sam9g45_matrix.h>
-+#include <mach/at91sam9_smc.h>
-+#include <mach/at_hdmac.h>
-+
-+#include "generic.h"
-+
-+
-+/* --------------------------------------------------------------------
-+ * HDMAC - AHB DMA Controller
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE)
-+static u64 hdmac_dmamask = DMA_BIT_MASK(32);
-+
-+static struct at_dma_platform_data atdma_pdata = {
-+ .nr_channels = 8,
-+};
-+
-+static struct resource hdmac_resources[] = {
-+ [0] = {
-+ .start = AT91_BASE_SYS + AT91_DMA,
-+ .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = AT91SAM9G45_ID_DMA,
-+ .end = AT91SAM9G45_ID_DMA,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at_hdmac_device = {
-+ .name = "at_hdmac",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &hdmac_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &atdma_pdata,
-+ },
-+ .resource = hdmac_resources,
-+ .num_resources = ARRAY_SIZE(hdmac_resources),
-+};
-+
-+void __init at91_add_device_hdmac(void)
-+{
-+ dma_cap_set(DMA_MEMCPY, atdma_pdata.cap_mask);
-+ dma_cap_set(DMA_SLAVE, atdma_pdata.cap_mask);
-+ platform_device_register(&at_hdmac_device);
-+}
-+#else
-+void __init at91_add_device_hdmac(void) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * USB Host (OHCI)
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-+static u64 ohci_dmamask = DMA_BIT_MASK(32);
-+static struct at91_usbh_data usbh_ohci_data;
-+
-+static struct resource usbh_ohci_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_OHCI_BASE,
-+ .end = AT91SAM9G45_OHCI_BASE + SZ_1M - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_UHPHS,
-+ .end = AT91SAM9G45_ID_UHPHS,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91_usbh_ohci_device = {
-+ .name = "at91_ohci",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &ohci_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &usbh_ohci_data,
-+ },
-+ .resource = usbh_ohci_resources,
-+ .num_resources = ARRAY_SIZE(usbh_ohci_resources),
-+};
-+
-+void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data)
-+{
-+ int i;
-+
-+ if (!data)
-+ return;
-+
-+ /* Enable VBus control for UHP ports */
-+ for (i = 0; i < data->ports; i++) {
-+ if (data->vbus_pin[i])
-+ at91_set_gpio_output(data->vbus_pin[i], 0);
-+ }
-+
-+ usbh_ohci_data = *data;
-+ platform_device_register(&at91_usbh_ohci_device);
-+}
-+#else
-+void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * USB Host HS (EHCI)
-+ * Needs an OHCI host for low and full speed management
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE)
-+static u64 ehci_dmamask = DMA_BIT_MASK(32);
-+static struct at91_usbh_data usbh_ehci_data;
-+
-+static struct resource usbh_ehci_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_EHCI_BASE,
-+ .end = AT91SAM9G45_EHCI_BASE + SZ_1M - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_UHPHS,
-+ .end = AT91SAM9G45_ID_UHPHS,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91_usbh_ehci_device = {
-+ .name = "atmel-ehci",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &ehci_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &usbh_ehci_data,
-+ },
-+ .resource = usbh_ehci_resources,
-+ .num_resources = ARRAY_SIZE(usbh_ehci_resources),
-+};
-+
-+void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data)
-+{
-+ int i;
-+
-+ if (!data)
-+ return;
-+
-+ /* Enable VBus control for UHP ports */
-+ for (i = 0; i < data->ports; i++) {
-+ if (data->vbus_pin[i])
-+ at91_set_gpio_output(data->vbus_pin[i], 0);
-+ }
-+
-+ usbh_ehci_data = *data;
-+ at91_clock_associate("uhphs_clk", &at91_usbh_ehci_device.dev, "ehci_clk");
-+ platform_device_register(&at91_usbh_ehci_device);
-+}
-+#else
-+void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * USB HS Device (Gadget)
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE)
-+static struct resource usba_udc_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_UDPHS_FIFO,
-+ .end = AT91SAM9G45_UDPHS_FIFO + SZ_512K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_BASE_UDPHS,
-+ .end = AT91SAM9G45_BASE_UDPHS + SZ_1K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = AT91SAM9G45_ID_UDPHS,
-+ .end = AT91SAM9G45_ID_UDPHS,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+#define EP(nam, idx, maxpkt, maxbk, dma, isoc) \
-+ [idx] = { \
-+ .name = nam, \
-+ .index = idx, \
-+ .fifo_size = maxpkt, \
-+ .nr_banks = maxbk, \
-+ .can_dma = dma, \
-+ .can_isoc = isoc, \
-+ }
-+
-+static struct usba_ep_data usba_udc_ep[] __initdata = {
-+ EP("ep0", 0, 64, 1, 0, 0),
-+ EP("ep1", 1, 1024, 2, 1, 1),
-+ EP("ep2", 2, 1024, 2, 1, 1),
-+ EP("ep3", 3, 1024, 3, 1, 0),
-+ EP("ep4", 4, 1024, 3, 1, 0),
-+ EP("ep5", 5, 1024, 3, 1, 1),
-+ EP("ep6", 6, 1024, 3, 1, 1),
-+};
-+
-+#undef EP
-+
-+/*
-+ * pdata doesn't have room for any endpoints, so we need to
-+ * append room for the ones we need right after it.
-+ */
-+static struct {
-+ struct usba_platform_data pdata;
-+ struct usba_ep_data ep[7];
-+} usba_udc_data;
-+
-+static struct platform_device at91_usba_udc_device = {
-+ .name = "atmel_usba_udc",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &usba_udc_data.pdata,
-+ },
-+ .resource = usba_udc_resources,
-+ .num_resources = ARRAY_SIZE(usba_udc_resources),
-+};
-+
-+void __init at91_add_device_usba(struct usba_platform_data *data)
-+{
-+ usba_udc_data.pdata.vbus_pin = -EINVAL;
-+ usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep);
-+ memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep));;
-+
-+ if (data && data->vbus_pin > 0) {
-+ at91_set_gpio_input(data->vbus_pin, 0);
-+ at91_set_deglitch(data->vbus_pin, 1);
-+ usba_udc_data.pdata.vbus_pin = data->vbus_pin;
-+ }
-+
-+ /* Pullup pin is handled internally by USB device peripheral */
-+
-+ /* Clocks */
-+ at91_clock_associate("utmi_clk", &at91_usba_udc_device.dev, "hclk");
-+ at91_clock_associate("udphs_clk", &at91_usba_udc_device.dev, "pclk");
-+
-+ platform_device_register(&at91_usba_udc_device);
-+}
-+#else
-+void __init at91_add_device_usba(struct usba_platform_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * Ethernet
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
-+static u64 eth_dmamask = DMA_BIT_MASK(32);
-+static struct at91_eth_data eth_data;
-+
-+static struct resource eth_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_EMAC,
-+ .end = AT91SAM9G45_BASE_EMAC + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_EMAC,
-+ .end = AT91SAM9G45_ID_EMAC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_eth_device = {
-+ .name = "macb",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = ð_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = ð_data,
-+ },
-+ .resource = eth_resources,
-+ .num_resources = ARRAY_SIZE(eth_resources),
-+};
-+
-+void __init at91_add_device_eth(struct at91_eth_data *data)
-+{
-+ if (!data)
-+ return;
-+
-+ if (data->phy_irq_pin) {
-+ at91_set_gpio_input(data->phy_irq_pin, 0);
-+ at91_set_deglitch(data->phy_irq_pin, 1);
-+ }
-+
-+ /* Pins used for MII and RMII */
-+ at91_set_A_periph(AT91_PIN_PA17, 0); /* ETXCK_EREFCK */
-+ at91_set_A_periph(AT91_PIN_PA15, 0); /* ERXDV */
-+ at91_set_A_periph(AT91_PIN_PA12, 0); /* ERX0 */
-+ at91_set_A_periph(AT91_PIN_PA13, 0); /* ERX1 */
-+ at91_set_A_periph(AT91_PIN_PA16, 0); /* ERXER */
-+ at91_set_A_periph(AT91_PIN_PA14, 0); /* ETXEN */
-+ at91_set_A_periph(AT91_PIN_PA10, 0); /* ETX0 */
-+ at91_set_A_periph(AT91_PIN_PA11, 0); /* ETX1 */
-+ at91_set_A_periph(AT91_PIN_PA19, 0); /* EMDIO */
-+ at91_set_A_periph(AT91_PIN_PA18, 0); /* EMDC */
-+
-+ if (!data->is_rmii) {
-+ at91_set_B_periph(AT91_PIN_PA29, 0); /* ECRS */
-+ at91_set_B_periph(AT91_PIN_PA30, 0); /* ECOL */
-+ at91_set_B_periph(AT91_PIN_PA8, 0); /* ERX2 */
-+ at91_set_B_periph(AT91_PIN_PA9, 0); /* ERX3 */
-+ at91_set_B_periph(AT91_PIN_PA28, 0); /* ERXCK */
-+ at91_set_B_periph(AT91_PIN_PA6, 0); /* ETX2 */
-+ at91_set_B_periph(AT91_PIN_PA7, 0); /* ETX3 */
-+ at91_set_B_periph(AT91_PIN_PA27, 0); /* ETXER */
-+ }
-+
-+ eth_data = *data;
-+ platform_device_register(&at91sam9g45_eth_device);
-+}
-+#else
-+void __init at91_add_device_eth(struct at91_eth_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * MMC / SD
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
-+static u64 mmc_dmamask = DMA_BIT_MASK(32);
-+static struct mci_platform_data mmc0_data, mmc1_data;
-+
-+static struct resource mmc0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_MCI0,
-+ .end = AT91SAM9G45_BASE_MCI0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_MCI0,
-+ .end = AT91SAM9G45_ID_MCI0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_mmc0_device = {
-+ .name = "atmel_mci",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &mmc_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &mmc0_data,
-+ },
-+ .resource = mmc0_resources,
-+ .num_resources = ARRAY_SIZE(mmc0_resources),
-+};
-+
-+static struct resource mmc1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_MCI1,
-+ .end = AT91SAM9G45_BASE_MCI1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_MCI1,
-+ .end = AT91SAM9G45_ID_MCI1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_mmc1_device = {
-+ .name = "atmel_mci",
-+ .id = 1,
-+ .dev = {
-+ .dma_mask = &mmc_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &mmc1_data,
-+ },
-+ .resource = mmc1_resources,
-+ .num_resources = ARRAY_SIZE(mmc1_resources),
-+};
-+
-+/* Consider only one slot : slot 0 */
-+void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)
-+{
-+ struct at_dma_slave *atslave;
-+
-+ if (!data)
-+ return;
-+
-+ /* Must have at least one usable slot */
-+ if (!data->slot[0].bus_width)
-+ return;
-+
-+#if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE)
-+ atslave = kzalloc(sizeof(struct at_dma_slave), GFP_KERNEL);
-+
-+ /* DMA slave channel configuration */
-+ atslave->dma_dev = &at_hdmac_device.dev;
-+ atslave->reg_width = DW_DMA_SLAVE_WIDTH_32BIT;
-+ atslave->cfg = ATC_FIFOCFG_HALFFIFO
-+ | ATC_SRC_H2SEL_HW | ATC_DST_H2SEL_HW;
-+ atslave->ctrla = ATC_SCSIZE_16 | ATC_DCSIZE_16;
-+ if (mmc_id == 0) /* MCI0 */
-+ atslave->cfg |= ATC_SRC_PER(AT_DMA_ID_MCI0)
-+ | ATC_DST_PER(AT_DMA_ID_MCI0);
-+
-+ else /* MCI1 */
-+ atslave->cfg |= ATC_SRC_PER(AT_DMA_ID_MCI1)
-+ | ATC_DST_PER(AT_DMA_ID_MCI1);
-+
-+ data->dma_slave = atslave;
-+#endif
-+
-+
-+ /* input/irq */
-+ if (data->slot[0].detect_pin) {
-+ at91_set_gpio_input(data->slot[0].detect_pin, 1);
-+ at91_set_deglitch(data->slot[0].detect_pin, 1);
-+ }
-+ if (data->slot[0].wp_pin)
-+ at91_set_gpio_input(data->slot[0].wp_pin, 1);
-+
-+ if (mmc_id == 0) { /* MCI0 */
-+
-+ /* CLK */
-+ at91_set_A_periph(AT91_PIN_PA0, 0);
-+
-+ /* CMD */
-+ at91_set_A_periph(AT91_PIN_PA1, 1);
-+
-+ /* DAT0, maybe DAT1..DAT3 and maybe DAT4..DAT7 */
-+ at91_set_A_periph(AT91_PIN_PA2, 1);
-+ if (data->slot[0].bus_width == 4) {
-+ at91_set_A_periph(AT91_PIN_PA3, 1);
-+ at91_set_A_periph(AT91_PIN_PA4, 1);
-+ at91_set_A_periph(AT91_PIN_PA5, 1);
-+ if (data->slot[0].bus_width == 8) {
-+ at91_set_A_periph(AT91_PIN_PA6, 1);
-+ at91_set_A_periph(AT91_PIN_PA7, 1);
-+ at91_set_A_periph(AT91_PIN_PA8, 1);
-+ at91_set_A_periph(AT91_PIN_PA9, 1);
-+ }
-+ }
-+
-+ mmc0_data = *data;
-+ at91_clock_associate("mci0_clk", &at91sam9g45_mmc0_device.dev, "mci_clk");
-+ platform_device_register(&at91sam9g45_mmc0_device);
-+
-+ } else { /* MCI1 */
-+
-+ /* CLK */
-+ at91_set_A_periph(AT91_PIN_PA31, 0);
-+
-+ /* CMD */
-+ at91_set_A_periph(AT91_PIN_PA22, 1);
-+
-+ /* DAT0, maybe DAT1..DAT3 and maybe DAT4..DAT7 */
-+ at91_set_A_periph(AT91_PIN_PA23, 1);
-+ if (data->slot[0].bus_width == 4) {
-+ at91_set_A_periph(AT91_PIN_PA24, 1);
-+ at91_set_A_periph(AT91_PIN_PA25, 1);
-+ at91_set_A_periph(AT91_PIN_PA26, 1);
-+ if (data->slot[0].bus_width == 8) {
-+ at91_set_A_periph(AT91_PIN_PA27, 1);
-+ at91_set_A_periph(AT91_PIN_PA28, 1);
-+ at91_set_A_periph(AT91_PIN_PA29, 1);
-+ at91_set_A_periph(AT91_PIN_PA30, 1);
-+ }
-+ }
-+
-+ mmc1_data = *data;
-+ at91_clock_associate("mci1_clk", &at91sam9g45_mmc1_device.dev, "mci_clk");
-+ platform_device_register(&at91sam9g45_mmc1_device);
-+
-+ }
-+}
-+#else
-+void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * NAND / SmartMedia
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_MTD_NAND_ATMEL) || defined(CONFIG_MTD_NAND_ATMEL_MODULE)
-+static struct atmel_nand_data nand_data;
-+
-+#define NAND_BASE AT91_CHIPSELECT_3
-+
-+static struct resource nand_resources[] = {
-+ [0] = {
-+ .start = NAND_BASE,
-+ .end = NAND_BASE + SZ_256M - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91_BASE_SYS + AT91_ECC,
-+ .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1,
-+ .flags = IORESOURCE_MEM,
-+ }
-+};
-+
-+static struct platform_device at91sam9g45_nand_device = {
-+ .name = "atmel_nand",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &nand_data,
-+ },
-+ .resource = nand_resources,
-+ .num_resources = ARRAY_SIZE(nand_resources),
-+};
-+
-+void __init at91_add_device_nand(struct atmel_nand_data *data)
-+{
-+ unsigned long csa;
-+
-+ if (!data)
-+ return;
-+
-+ csa = at91_sys_read(AT91_MATRIX_EBICSA);
-+ at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA);
-+
-+ /* enable pin */
-+ if (data->enable_pin)
-+ at91_set_gpio_output(data->enable_pin, 1);
-+
-+ /* ready/busy pin */
-+ if (data->rdy_pin)
-+ at91_set_gpio_input(data->rdy_pin, 1);
-+
-+ /* card detect pin */
-+ if (data->det_pin)
-+ at91_set_gpio_input(data->det_pin, 1);
-+
-+ nand_data = *data;
-+ platform_device_register(&at91sam9g45_nand_device);
-+}
-+#else
-+void __init at91_add_device_nand(struct atmel_nand_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * TWI (i2c)
-+ * -------------------------------------------------------------------- */
-+
-+/*
-+ * Prefer the GPIO code since the TWI controller isn't robust
-+ * (gets overruns and underruns under load) and can only issue
-+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
-+ */
-+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
-+static struct i2c_gpio_platform_data pdata_i2c0 = {
-+ .sda_pin = AT91_PIN_PA20,
-+ .sda_is_open_drain = 1,
-+ .scl_pin = AT91_PIN_PA21,
-+ .scl_is_open_drain = 1,
-+ .udelay = 2, /* ~100 kHz */
-+};
-+
-+static struct platform_device at91sam9g45_twi0_device = {
-+ .name = "i2c-gpio",
-+ .id = 0,
-+ .dev.platform_data = &pdata_i2c0,
-+};
-+
-+static struct i2c_gpio_platform_data pdata_i2c1 = {
-+ .sda_pin = AT91_PIN_PB10,
-+ .sda_is_open_drain = 1,
-+ .scl_pin = AT91_PIN_PB11,
-+ .scl_is_open_drain = 1,
-+ .udelay = 2, /* ~100 kHz */
-+};
-+
-+static struct platform_device at91sam9g45_twi1_device = {
-+ .name = "i2c-gpio",
-+ .id = 1,
-+ .dev.platform_data = &pdata_i2c1,
-+};
-+
-+void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices)
-+{
-+ i2c_register_board_info(i2c_id, devices, nr_devices);
-+
-+ if (i2c_id == 0) {
-+ at91_set_GPIO_periph(AT91_PIN_PA20, 1); /* TWD (SDA) */
-+ at91_set_multi_drive(AT91_PIN_PA20, 1);
-+
-+ at91_set_GPIO_periph(AT91_PIN_PA21, 1); /* TWCK (SCL) */
-+ at91_set_multi_drive(AT91_PIN_PA21, 1);
-+
-+ platform_device_register(&at91sam9g45_twi0_device);
-+ } else {
-+ at91_set_GPIO_periph(AT91_PIN_PB10, 1); /* TWD (SDA) */
-+ at91_set_multi_drive(AT91_PIN_PB10, 1);
-+
-+ at91_set_GPIO_periph(AT91_PIN_PB11, 1); /* TWCK (SCL) */
-+ at91_set_multi_drive(AT91_PIN_PB11, 1);
-+
-+ platform_device_register(&at91sam9g45_twi1_device);
-+ }
-+}
-+
-+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
-+static struct resource twi0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_TWI0,
-+ .end = AT91SAM9G45_BASE_TWI0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_TWI0,
-+ .end = AT91SAM9G45_ID_TWI0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_twi0_device = {
-+ .name = "at91_i2c",
-+ .id = 0,
-+ .resource = twi0_resources,
-+ .num_resources = ARRAY_SIZE(twi0_resources),
-+};
-+
-+static struct resource twi1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_TWI1,
-+ .end = AT91SAM9G45_BASE_TWI1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_TWI1,
-+ .end = AT91SAM9G45_ID_TWI1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_twi1_device = {
-+ .name = "at91_i2c",
-+ .id = 1,
-+ .resource = twi1_resources,
-+ .num_resources = ARRAY_SIZE(twi1_resources),
-+};
-+
-+void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices)
-+{
-+ i2c_register_board_info(i2c_id, devices, nr_devices);
-+
-+ /* pins used for TWI interface */
-+ if (i2c_id == 0) {
-+ at91_set_A_periph(AT91_PIN_PA20, 0); /* TWD */
-+ at91_set_multi_drive(AT91_PIN_PA20, 1);
-+
-+ at91_set_A_periph(AT91_PIN_PA21, 0); /* TWCK */
-+ at91_set_multi_drive(AT91_PIN_PA21, 1);
-+
-+ platform_device_register(&at91sam9g45_twi0_device);
-+ } else {
-+ at91_set_A_periph(AT91_PIN_PB10, 0); /* TWD */
-+ at91_set_multi_drive(AT91_PIN_PB10, 1);
-+
-+ at91_set_A_periph(AT91_PIN_PB11, 0); /* TWCK */
-+ at91_set_multi_drive(AT91_PIN_PB11, 1);
-+
-+ platform_device_register(&at91sam9g45_twi1_device);
-+ }
-+}
-+#else
-+void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * SPI
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE)
-+static u64 spi_dmamask = DMA_BIT_MASK(32);
-+
-+static struct resource spi0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_SPI0,
-+ .end = AT91SAM9G45_BASE_SPI0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_SPI0,
-+ .end = AT91SAM9G45_ID_SPI0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_spi0_device = {
-+ .name = "atmel_spi",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &spi_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .resource = spi0_resources,
-+ .num_resources = ARRAY_SIZE(spi0_resources),
-+};
-+
-+static const unsigned spi0_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PB18, AT91_PIN_PB19, AT91_PIN_PD27 };
-+
-+static struct resource spi1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_SPI1,
-+ .end = AT91SAM9G45_BASE_SPI1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_SPI1,
-+ .end = AT91SAM9G45_ID_SPI1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_spi1_device = {
-+ .name = "atmel_spi",
-+ .id = 1,
-+ .dev = {
-+ .dma_mask = &spi_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .resource = spi1_resources,
-+ .num_resources = ARRAY_SIZE(spi1_resources),
-+};
-+
-+static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB17, AT91_PIN_PD28, AT91_PIN_PD18, AT91_PIN_PD19 };
-+
-+void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
-+{
-+ int i;
-+ unsigned long cs_pin;
-+ short enable_spi0 = 0;
-+ short enable_spi1 = 0;
-+
-+ /* Choose SPI chip-selects */
-+ for (i = 0; i < nr_devices; i++) {
-+ if (devices[i].controller_data)
-+ cs_pin = (unsigned long) devices[i].controller_data;
-+ else if (devices[i].bus_num == 0)
-+ cs_pin = spi0_standard_cs[devices[i].chip_select];
-+ else
-+ cs_pin = spi1_standard_cs[devices[i].chip_select];
-+
-+ if (devices[i].bus_num == 0)
-+ enable_spi0 = 1;
-+ else
-+ enable_spi1 = 1;
-+
-+ /* enable chip-select pin */
-+ at91_set_gpio_output(cs_pin, 1);
-+
-+ /* pass chip-select pin to driver */
-+ devices[i].controller_data = (void *) cs_pin;
-+ }
-+
-+ spi_register_board_info(devices, nr_devices);
-+
-+ /* Configure SPI bus(es) */
-+ if (enable_spi0) {
-+ at91_set_A_periph(AT91_PIN_PB0, 0); /* SPI0_MISO */
-+ at91_set_A_periph(AT91_PIN_PB1, 0); /* SPI0_MOSI */
-+ at91_set_A_periph(AT91_PIN_PB2, 0); /* SPI0_SPCK */
-+
-+ at91_clock_associate("spi0_clk", &at91sam9g45_spi0_device.dev, "spi_clk");
-+ platform_device_register(&at91sam9g45_spi0_device);
-+ }
-+ if (enable_spi1) {
-+ at91_set_A_periph(AT91_PIN_PB14, 0); /* SPI1_MISO */
-+ at91_set_A_periph(AT91_PIN_PB15, 0); /* SPI1_MOSI */
-+ at91_set_A_periph(AT91_PIN_PB16, 0); /* SPI1_SPCK */
-+
-+ at91_clock_associate("spi1_clk", &at91sam9g45_spi1_device.dev, "spi_clk");
-+ platform_device_register(&at91sam9g45_spi1_device);
-+ }
-+}
-+#else
-+void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * AC97
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_SND_ATMEL_AC97C) || defined(CONFIG_SND_ATMEL_AC97C_MODULE)
-+static u64 ac97_dmamask = DMA_BIT_MASK(32);
-+static struct ac97c_platform_data ac97_data;
-+
-+static struct resource ac97_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_AC97C,
-+ .end = AT91SAM9G45_BASE_AC97C + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_AC97C,
-+ .end = AT91SAM9G45_ID_AC97C,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_ac97_device = {
-+ .name = "atmel_ac97c",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &ac97_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &ac97_data,
-+ },
-+ .resource = ac97_resources,
-+ .num_resources = ARRAY_SIZE(ac97_resources),
-+};
-+
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data)
-+{
-+ if (!data)
-+ return;
-+
-+ at91_set_A_periph(AT91_PIN_PD8, 0); /* AC97FS */
-+ at91_set_A_periph(AT91_PIN_PD9, 0); /* AC97CK */
-+ at91_set_A_periph(AT91_PIN_PD7, 0); /* AC97TX */
-+ at91_set_A_periph(AT91_PIN_PD6, 0); /* AC97RX */
-+
-+ /* reset */
-+ if (data->reset_pin)
-+ at91_set_gpio_output(data->reset_pin, 0);
-+
-+ ac97_data = *data;
-+ platform_device_register(&at91sam9g45_ac97_device);
-+}
-+#else
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * LCD Controller
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
-+static u64 lcdc_dmamask = DMA_BIT_MASK(32);
-+static struct atmel_lcdfb_info lcdc_data;
-+
-+static struct resource lcdc_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_LCDC_BASE,
-+ .end = AT91SAM9G45_LCDC_BASE + SZ_4K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_LCDC,
-+ .end = AT91SAM9G45_ID_LCDC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91_lcdc_device = {
-+ .name = "atmel_lcdfb",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &lcdc_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &lcdc_data,
-+ },
-+ .resource = lcdc_resources,
-+ .num_resources = ARRAY_SIZE(lcdc_resources),
-+};
-+
-+void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
-+{
-+ if (!data)
-+ return;
-+
-+ at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
-+
-+ at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
-+ at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
-+ at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */
-+ at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */
-+ at91_set_A_periph(AT91_PIN_PE6, 0); /* LCDDEN */
-+ at91_set_A_periph(AT91_PIN_PE7, 0); /* LCDD0 */
-+ at91_set_A_periph(AT91_PIN_PE8, 0); /* LCDD1 */
-+ at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2 */
-+ at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3 */
-+ at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4 */
-+ at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5 */
-+ at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6 */
-+ at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7 */
-+ at91_set_A_periph(AT91_PIN_PE15, 0); /* LCDD8 */
-+ at91_set_A_periph(AT91_PIN_PE16, 0); /* LCDD9 */
-+ at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10 */
-+ at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11 */
-+ at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12 */
-+ at91_set_A_periph(AT91_PIN_PE20, 0); /* LCDD13 */
-+ at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14 */
-+ at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15 */
-+ at91_set_A_periph(AT91_PIN_PE23, 0); /* LCDD16 */
-+ at91_set_A_periph(AT91_PIN_PE24, 0); /* LCDD17 */
-+ at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18 */
-+ at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19 */
-+ at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20 */
-+ at91_set_A_periph(AT91_PIN_PE28, 0); /* LCDD21 */
-+ at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */
-+ at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */
-+
-+ lcdc_data = *data;
-+ platform_device_register(&at91_lcdc_device);
-+}
-+#else
-+void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * Timer/Counter block
-+ * -------------------------------------------------------------------- */
-+
-+#ifdef CONFIG_ATMEL_TCLIB
-+static struct resource tcb0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_TCB0,
-+ .end = AT91SAM9G45_BASE_TCB0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_TCB,
-+ .end = AT91SAM9G45_ID_TCB,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_tcb0_device = {
-+ .name = "atmel_tcb",
-+ .id = 0,
-+ .resource = tcb0_resources,
-+ .num_resources = ARRAY_SIZE(tcb0_resources),
-+};
-+
-+/* TCB1 begins with TC3 */
-+static struct resource tcb1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_TCB1,
-+ .end = AT91SAM9G45_BASE_TCB1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_TCB,
-+ .end = AT91SAM9G45_ID_TCB,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_tcb1_device = {
-+ .name = "atmel_tcb",
-+ .id = 1,
-+ .resource = tcb1_resources,
-+ .num_resources = ARRAY_SIZE(tcb1_resources),
-+};
-+
-+static void __init at91_add_device_tc(void)
-+{
-+ /* this chip has one clock and irq for all six TC channels */
-+ at91_clock_associate("tcb_clk", &at91sam9g45_tcb0_device.dev, "t0_clk");
-+ platform_device_register(&at91sam9g45_tcb0_device);
-+ at91_clock_associate("tcb_clk", &at91sam9g45_tcb1_device.dev, "t0_clk");
-+ platform_device_register(&at91sam9g45_tcb1_device);
-+}
-+#else
-+static void __init at91_add_device_tc(void) { }
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * RTC
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE)
-+static struct platform_device at91sam9g45_rtc_device = {
-+ .name = "at91_rtc",
-+ .id = -1,
-+ .num_resources = 0,
-+};
-+
-+static void __init at91_add_device_rtc(void)
-+{
-+ platform_device_register(&at91sam9g45_rtc_device);
-+}
-+#else
-+static void __init at91_add_device_rtc(void) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * Touchscreen
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) || defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC_MODULE)
-+static u64 tsadcc_dmamask = DMA_BIT_MASK(32);
-+static struct at91_tsadcc_data tsadcc_data;
-+
-+static struct resource tsadcc_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_TSC,
-+ .end = AT91SAM9G45_BASE_TSC + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_TSC,
-+ .end = AT91SAM9G45_ID_TSC,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+static struct platform_device at91sam9g45_tsadcc_device = {
-+ .name = "atmel_tsadcc",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &tsadcc_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &tsadcc_data,
-+ },
-+ .resource = tsadcc_resources,
-+ .num_resources = ARRAY_SIZE(tsadcc_resources),
-+};
-+
-+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data)
-+{
-+ if (!data)
-+ return;
-+
-+ at91_set_gpio_input(AT91_PIN_PD20, 0); /* AD0_XR */
-+ at91_set_gpio_input(AT91_PIN_PD21, 0); /* AD1_XL */
-+ at91_set_gpio_input(AT91_PIN_PD22, 0); /* AD2_YT */
-+ at91_set_gpio_input(AT91_PIN_PD23, 0); /* AD3_TB */
-+
-+ tsadcc_data = *data;
-+ platform_device_register(&at91sam9g45_tsadcc_device);
-+}
-+#else
-+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * RTT
-+ * -------------------------------------------------------------------- */
-+
-+static struct resource rtt_resources[] = {
-+ {
-+ .start = AT91_BASE_SYS + AT91_RTT,
-+ .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1,
-+ .flags = IORESOURCE_MEM,
-+ }
-+};
-+
-+static struct platform_device at91sam9g45_rtt_device = {
-+ .name = "at91_rtt",
-+ .id = 0,
-+ .resource = rtt_resources,
-+ .num_resources = ARRAY_SIZE(rtt_resources),
-+};
-+
-+static void __init at91_add_device_rtt(void)
-+{
-+ platform_device_register(&at91sam9g45_rtt_device);
-+}
-+
-+
-+/* --------------------------------------------------------------------
-+ * Watchdog
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
-+static struct platform_device at91sam9g45_wdt_device = {
-+ .name = "at91_wdt",
-+ .id = -1,
-+ .num_resources = 0,
-+};
-+
-+static void __init at91_add_device_watchdog(void)
-+{
-+ platform_device_register(&at91sam9g45_wdt_device);
-+}
-+#else
-+static void __init at91_add_device_watchdog(void) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * PWM
-+ * --------------------------------------------------------------------*/
-+
-+#if defined(CONFIG_ATMEL_PWM) || defined(CONFIG_ATMEL_PWM_MODULE)
-+static u32 pwm_mask;
-+
-+static struct resource pwm_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_PWMC,
-+ .end = AT91SAM9G45_BASE_PWMC + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_PWMC,
-+ .end = AT91SAM9G45_ID_PWMC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_pwm0_device = {
-+ .name = "atmel_pwm",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &pwm_mask,
-+ },
-+ .resource = pwm_resources,
-+ .num_resources = ARRAY_SIZE(pwm_resources),
-+};
-+
-+void __init at91_add_device_pwm(u32 mask)
-+{
-+ if (mask & (1 << AT91_PWM0))
-+ at91_set_B_periph(AT91_PIN_PD24, 1); /* enable PWM0 */
-+
-+ if (mask & (1 << AT91_PWM1))
-+ at91_set_B_periph(AT91_PIN_PD31, 1); /* enable PWM1 */
-+
-+ if (mask & (1 << AT91_PWM2))
-+ at91_set_B_periph(AT91_PIN_PD26, 1); /* enable PWM2 */
-+
-+ if (mask & (1 << AT91_PWM3))
-+ at91_set_B_periph(AT91_PIN_PD0, 1); /* enable PWM3 */
-+
-+ pwm_mask = mask;
-+
-+ platform_device_register(&at91sam9g45_pwm0_device);
-+}
-+#else
-+void __init at91_add_device_pwm(u32 mask) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * SSC -- Synchronous Serial Controller
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_ATMEL_SSC) || defined(CONFIG_ATMEL_SSC_MODULE)
-+static u64 ssc0_dmamask = DMA_BIT_MASK(32);
-+
-+static struct resource ssc0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_SSC0,
-+ .end = AT91SAM9G45_BASE_SSC0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_SSC0,
-+ .end = AT91SAM9G45_ID_SSC0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_ssc0_device = {
-+ .name = "ssc",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &ssc0_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .resource = ssc0_resources,
-+ .num_resources = ARRAY_SIZE(ssc0_resources),
-+};
-+
-+static inline void configure_ssc0_pins(unsigned pins)
-+{
-+ if (pins & ATMEL_SSC_TF)
-+ at91_set_A_periph(AT91_PIN_PD1, 1);
-+ if (pins & ATMEL_SSC_TK)
-+ at91_set_A_periph(AT91_PIN_PD0, 1);
-+ if (pins & ATMEL_SSC_TD)
-+ at91_set_A_periph(AT91_PIN_PD2, 1);
-+ if (pins & ATMEL_SSC_RD)
-+ at91_set_A_periph(AT91_PIN_PD3, 1);
-+ if (pins & ATMEL_SSC_RK)
-+ at91_set_A_periph(AT91_PIN_PD4, 1);
-+ if (pins & ATMEL_SSC_RF)
-+ at91_set_A_periph(AT91_PIN_PD5, 1);
-+}
-+
-+static u64 ssc1_dmamask = DMA_BIT_MASK(32);
-+
-+static struct resource ssc1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_SSC1,
-+ .end = AT91SAM9G45_BASE_SSC1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_SSC1,
-+ .end = AT91SAM9G45_ID_SSC1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9g45_ssc1_device = {
-+ .name = "ssc",
-+ .id = 1,
-+ .dev = {
-+ .dma_mask = &ssc1_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .resource = ssc1_resources,
-+ .num_resources = ARRAY_SIZE(ssc1_resources),
-+};
-+
-+static inline void configure_ssc1_pins(unsigned pins)
-+{
-+ if (pins & ATMEL_SSC_TF)
-+ at91_set_A_periph(AT91_PIN_PD14, 1);
-+ if (pins & ATMEL_SSC_TK)
-+ at91_set_A_periph(AT91_PIN_PD12, 1);
-+ if (pins & ATMEL_SSC_TD)
-+ at91_set_A_periph(AT91_PIN_PD10, 1);
-+ if (pins & ATMEL_SSC_RD)
-+ at91_set_A_periph(AT91_PIN_PD11, 1);
-+ if (pins & ATMEL_SSC_RK)
-+ at91_set_A_periph(AT91_PIN_PD13, 1);
-+ if (pins & ATMEL_SSC_RF)
-+ at91_set_A_periph(AT91_PIN_PD15, 1);
-+}
-+
-+/*
-+ * SSC controllers are accessed through library code, instead of any
-+ * kind of all-singing/all-dancing driver. For example one could be
-+ * used by a particular I2S audio codec's driver, while another one
-+ * on the same system might be used by a custom data capture driver.
-+ */
-+void __init at91_add_device_ssc(unsigned id, unsigned pins)
-+{
-+ struct platform_device *pdev;
-+
-+ /*
-+ * NOTE: caller is responsible for passing information matching
-+ * "pins" to whatever will be using each particular controller.
-+ */
-+ switch (id) {
-+ case AT91SAM9G45_ID_SSC0:
-+ pdev = &at91sam9g45_ssc0_device;
-+ configure_ssc0_pins(pins);
-+ at91_clock_associate("ssc0_clk", &pdev->dev, "pclk");
-+ break;
-+ case AT91SAM9G45_ID_SSC1:
-+ pdev = &at91sam9g45_ssc1_device;
-+ configure_ssc1_pins(pins);
-+ at91_clock_associate("ssc1_clk", &pdev->dev, "pclk");
-+ break;
-+ default:
-+ return;
-+ }
-+
-+ platform_device_register(pdev);
-+}
-+
-+#else
-+void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
-+ * UART
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_SERIAL_ATMEL)
-+static struct resource dbgu_resources[] = {
-+ [0] = {
-+ .start = AT91_VA_BASE_SYS + AT91_DBGU,
-+ .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91_ID_SYS,
-+ .end = AT91_ID_SYS,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct atmel_uart_data dbgu_data = {
-+ .use_dma_tx = 0,
-+ .use_dma_rx = 0,
-+ .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
-+};
-+
-+static u64 dbgu_dmamask = DMA_BIT_MASK(32);
-+
-+static struct platform_device at91sam9g45_dbgu_device = {
-+ .name = "atmel_usart",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &dbgu_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &dbgu_data,
-+ },
-+ .resource = dbgu_resources,
-+ .num_resources = ARRAY_SIZE(dbgu_resources),
-+};
-+
-+static inline void configure_dbgu_pins(void)
-+{
-+ at91_set_A_periph(AT91_PIN_PB12, 0); /* DRXD */
-+ at91_set_A_periph(AT91_PIN_PB13, 1); /* DTXD */
-+}
-+
-+static struct resource uart0_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_US0,
-+ .end = AT91SAM9G45_BASE_US0 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_US0,
-+ .end = AT91SAM9G45_ID_US0,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct atmel_uart_data uart0_data = {
-+ .use_dma_tx = 1,
-+ .use_dma_rx = 1,
-+};
-+
-+static u64 uart0_dmamask = DMA_BIT_MASK(32);
-+
-+static struct platform_device at91sam9g45_uart0_device = {
-+ .name = "atmel_usart",
-+ .id = 1,
-+ .dev = {
-+ .dma_mask = &uart0_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &uart0_data,
-+ },
-+ .resource = uart0_resources,
-+ .num_resources = ARRAY_SIZE(uart0_resources),
-+};
-+
-+static inline void configure_usart0_pins(unsigned pins)
-+{
-+ at91_set_A_periph(AT91_PIN_PB19, 1); /* TXD0 */
-+ at91_set_A_periph(AT91_PIN_PB18, 0); /* RXD0 */
-+
-+ if (pins & ATMEL_UART_RTS)
-+ at91_set_B_periph(AT91_PIN_PB17, 0); /* RTS0 */
-+ if (pins & ATMEL_UART_CTS)
-+ at91_set_B_periph(AT91_PIN_PB15, 0); /* CTS0 */
-+}
-+
-+static struct resource uart1_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_US1,
-+ .end = AT91SAM9G45_BASE_US1 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_US1,
-+ .end = AT91SAM9G45_ID_US1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct atmel_uart_data uart1_data = {
-+ .use_dma_tx = 1,
-+ .use_dma_rx = 1,
-+};
-+
-+static u64 uart1_dmamask = DMA_BIT_MASK(32);
-+
-+static struct platform_device at91sam9g45_uart1_device = {
-+ .name = "atmel_usart",
-+ .id = 2,
-+ .dev = {
-+ .dma_mask = &uart1_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &uart1_data,
-+ },
-+ .resource = uart1_resources,
-+ .num_resources = ARRAY_SIZE(uart1_resources),
-+};
-+
-+static inline void configure_usart1_pins(unsigned pins)
-+{
-+ at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD1 */
-+ at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD1 */
-+
-+ if (pins & ATMEL_UART_RTS)
-+ at91_set_A_periph(AT91_PIN_PD16, 0); /* RTS1 */
-+ if (pins & ATMEL_UART_CTS)
-+ at91_set_A_periph(AT91_PIN_PD17, 0); /* CTS1 */
-+}
-+
-+static struct resource uart2_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_US2,
-+ .end = AT91SAM9G45_BASE_US2 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_US2,
-+ .end = AT91SAM9G45_ID_US2,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct atmel_uart_data uart2_data = {
-+ .use_dma_tx = 1,
-+ .use_dma_rx = 1,
-+};
-+
-+static u64 uart2_dmamask = DMA_BIT_MASK(32);
-+
-+static struct platform_device at91sam9g45_uart2_device = {
-+ .name = "atmel_usart",
-+ .id = 3,
-+ .dev = {
-+ .dma_mask = &uart2_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &uart2_data,
-+ },
-+ .resource = uart2_resources,
-+ .num_resources = ARRAY_SIZE(uart2_resources),
-+};
-+
-+static inline void configure_usart2_pins(unsigned pins)
-+{
-+ at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD2 */
-+ at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD2 */
-+
-+ if (pins & ATMEL_UART_RTS)
-+ at91_set_B_periph(AT91_PIN_PC9, 0); /* RTS2 */
-+ if (pins & ATMEL_UART_CTS)
-+ at91_set_B_periph(AT91_PIN_PC11, 0); /* CTS2 */
-+}
-+
-+static struct resource uart3_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9G45_BASE_US3,
-+ .end = AT91SAM9G45_BASE_US3 + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9G45_ID_US3,
-+ .end = AT91SAM9G45_ID_US3,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct atmel_uart_data uart3_data = {
-+ .use_dma_tx = 1,
-+ .use_dma_rx = 1,
-+};
-+
-+static u64 uart3_dmamask = DMA_BIT_MASK(32);
-+
-+static struct platform_device at91sam9g45_uart3_device = {
-+ .name = "atmel_usart",
-+ .id = 4,
-+ .dev = {
-+ .dma_mask = &uart3_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &uart3_data,
-+ },
-+ .resource = uart3_resources,
-+ .num_resources = ARRAY_SIZE(uart3_resources),
-+};
-+
-+static inline void configure_usart3_pins(unsigned pins)
-+{
-+ at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD3 */
-+ at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD3 */
-+
-+ if (pins & ATMEL_UART_RTS)
-+ at91_set_B_periph(AT91_PIN_PA23, 0); /* RTS3 */
-+ if (pins & ATMEL_UART_CTS)
-+ at91_set_B_periph(AT91_PIN_PA24, 0); /* CTS3 */
-+}
-+
-+static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */
-+struct platform_device *atmel_default_console_device; /* the serial console device */
-+
-+void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
-+{
-+ struct platform_device *pdev;
-+
-+ switch (id) {
-+ case 0: /* DBGU */
-+ pdev = &at91sam9g45_dbgu_device;
-+ configure_dbgu_pins();
-+ at91_clock_associate("mck", &pdev->dev, "usart");
-+ break;
-+ case AT91SAM9G45_ID_US0:
-+ pdev = &at91sam9g45_uart0_device;
-+ configure_usart0_pins(pins);
-+ at91_clock_associate("usart0_clk", &pdev->dev, "usart");
-+ break;
-+ case AT91SAM9G45_ID_US1:
-+ pdev = &at91sam9g45_uart1_device;
-+ configure_usart1_pins(pins);
-+ at91_clock_associate("usart1_clk", &pdev->dev, "usart");
-+ break;
-+ case AT91SAM9G45_ID_US2:
-+ pdev = &at91sam9g45_uart2_device;
-+ configure_usart2_pins(pins);
-+ at91_clock_associate("usart2_clk", &pdev->dev, "usart");
-+ break;
-+ case AT91SAM9G45_ID_US3:
-+ pdev = &at91sam9g45_uart3_device;
-+ configure_usart3_pins(pins);
-+ at91_clock_associate("usart3_clk", &pdev->dev, "usart");
-+ break;
-+ default:
-+ return;
-+ }
-+ pdev->id = portnr; /* update to mapped ID */
-+
-+ if (portnr < ATMEL_MAX_UART)
-+ at91_uarts[portnr] = pdev;
-+}
-+
-+void __init at91_set_serial_console(unsigned portnr)
-+{
-+ if (portnr < ATMEL_MAX_UART)
-+ atmel_default_console_device = at91_uarts[portnr];
-+}
-+
-+void __init at91_add_device_serial(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < ATMEL_MAX_UART; i++) {
-+ if (at91_uarts[i])
-+ platform_device_register(at91_uarts[i]);
-+ }
-+
-+ if (!atmel_default_console_device)
-+ printk(KERN_INFO "AT91: No default serial console defined.\n");
-+}
-+#else
-+void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-+void __init at91_set_serial_console(unsigned portnr) {}
-+void __init at91_add_device_serial(void) {}
-+#endif
-+
-+
-+/* -------------------------------------------------------------------- */
-+/*
-+ * These devices are always present and don't need any board-specific
-+ * setup.
-+ */
-+static int __init at91_add_standard_devices(void)
-+{
-+ at91_add_device_hdmac();
-+ at91_add_device_rtc();
-+ at91_add_device_rtt();
-+ at91_add_device_watchdog();
-+ at91_add_device_tc();
-+ return 0;
-+}
-+
-+arch_initcall(at91_add_standard_devices);
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9m10g45ek.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9m10g45ek.c 2011-02-01 16:40:30.165043750 +0100
-@@ -0,0 +1,436 @@
-+/*
-+ * Board-specific setup code for the AT91SAM9M10G45 Evaluation Kit family
-+ *
-+ * Covers: * AT91SAM9G45-EKES board
-+ * * AT91SAM9M10G45-EK board
-+ *
-+ * Copyright (C) 2009 Atmel Corporation.
-+ *
-+ * 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.
-+ *
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/spi/spi.h>
-+#include <linux/fb.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
-+#include <linux/leds.h>
-+#include <linux/clk.h>
-+#include <linux/atmel-mci.h>
-+
-+#include <mach/hardware.h>
-+#include <video/atmel_lcdc.h>
-+
-+#include <asm/setup.h>
-+#include <asm/mach-types.h>
-+#include <asm/irq.h>
-+
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <asm/mach/irq.h>
-+
-+#include <mach/hardware.h>
-+#include <mach/board.h>
-+#include <mach/gpio.h>
-+#include <mach/at91sam9_smc.h>
-+#include <mach/at91_shdwc.h>
-+
-+#include "sam9_smc.h"
-+#include "generic.h"
-+
-+
-+static void __init ek_map_io(void)
-+{
-+ /* Initialize processor: 12.000 MHz crystal */
-+ at91sam9g45_initialize(12000000);
-+
-+ /* DGBU on ttyS0. (Rx & Tx only) */
-+ at91_register_uart(0, 0, 0);
-+
-+ /* USART0 not connected on the -EK board */
-+ /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-+ at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-+
-+ /* set serial console to ttyS0 (ie, DBGU) */
-+ at91_set_serial_console(0);
-+}
-+
-+static void __init ek_init_irq(void)
-+{
-+ at91sam9g45_init_interrupts(NULL);
-+}
-+
-+
-+/*
-+ * USB HS Host port (common to OHCI & EHCI)
-+ */
-+static struct at91_usbh_data __initdata ek_usbh_hs_data = {
-+ .ports = 2,
-+ .vbus_pin = {AT91_PIN_PD1, AT91_PIN_PD3},
-+};
-+
-+
-+/*
-+ * USB HS Device port
-+ */
-+static struct usba_platform_data __initdata ek_usba_udc_data = {
-+ .vbus_pin = AT91_PIN_PB19,
-+};
-+
-+
-+/*
-+ * SPI devices.
-+ */
-+static struct spi_board_info ek_spi_devices[] = {
-+ { /* DataFlash chip */
-+ .modalias = "mtd_dataflash",
-+ .chip_select = 0,
-+ .max_speed_hz = 15 * 1000 * 1000,
-+ .bus_num = 0,
-+ },
-+};
-+
-+
-+/*
-+ * MCI (SD/MMC)
-+ */
-+static struct mci_platform_data __initdata mci0_data = {
-+ .slot[0] = {
-+ .bus_width = 4,
-+ .detect_pin = AT91_PIN_PD10,
-+ .wp_pin = -1,
-+ },
-+};
-+
-+static struct mci_platform_data __initdata mci1_data = {
-+ .slot[0] = {
-+ .bus_width = 4,
-+ .detect_pin = AT91_PIN_PD11,
-+ .wp_pin = AT91_PIN_PD29,
-+ },
-+};
-+
-+
-+/*
-+ * MACB Ethernet device
-+ */
-+static struct at91_eth_data __initdata ek_macb_data = {
-+ .phy_irq_pin = AT91_PIN_PD5,
-+ .is_rmii = 1,
-+};
-+
-+
-+/*
-+ * NAND flash
-+ */
-+static struct mtd_partition __initdata ek_nand_partition[] = {
-+ {
-+ .name = "Partition 1",
-+ .offset = 0,
-+ .size = SZ_64M,
-+ },
-+ {
-+ .name = "Partition 2",
-+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = MTDPART_SIZ_FULL,
-+ },
-+};
-+
-+static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-+{
-+ *num_partitions = ARRAY_SIZE(ek_nand_partition);
-+ return ek_nand_partition;
-+}
-+
-+/* det_pin is not connected */
-+static struct atmel_nand_data __initdata ek_nand_data = {
-+ .ale = 21,
-+ .cle = 22,
-+ .rdy_pin = AT91_PIN_PC8,
-+ .enable_pin = AT91_PIN_PC14,
-+ .partition_info = nand_partitions,
-+#if defined(CONFIG_MTD_NAND_AT91_BUSWIDTH_16)
-+ .bus_width_16 = 1,
-+#else
-+ .bus_width_16 = 0,
-+#endif
-+};
-+
-+static struct sam9_smc_config __initdata ek_nand_smc_config = {
-+ .ncs_read_setup = 0,
-+ .nrd_setup = 2,
-+ .ncs_write_setup = 0,
-+ .nwe_setup = 2,
-+
-+ .ncs_read_pulse = 4,
-+ .nrd_pulse = 4,
-+ .ncs_write_pulse = 4,
-+ .nwe_pulse = 4,
-+
-+ .read_cycle = 7,
-+ .write_cycle = 7,
-+
-+ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
-+ .tdf_cycles = 3,
-+};
-+
-+static void __init ek_add_device_nand(void)
-+{
-+ /* setup bus-width (8 or 16) */
-+ if (ek_nand_data.bus_width_16)
-+ ek_nand_smc_config.mode |= AT91_SMC_DBW_16;
-+ else
-+ ek_nand_smc_config.mode |= AT91_SMC_DBW_8;
-+
-+ /* configure chip-select 3 (NAND) */
-+ sam9_smc_configure(3, &ek_nand_smc_config);
-+
-+ at91_add_device_nand(&ek_nand_data);
-+}
-+
-+
-+/*
-+ * LCD Controller
-+ */
-+#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
-+static struct fb_videomode at91_tft_vga_modes[] = {
-+ {
-+ .name = "LG",
-+ .refresh = 60,
-+ .xres = 480, .yres = 272,
-+ .pixclock = KHZ2PICOS(9000),
-+
-+ .left_margin = 1, .right_margin = 1,
-+ .upper_margin = 40, .lower_margin = 1,
-+ .hsync_len = 45, .vsync_len = 1,
-+
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct fb_monspecs at91fb_default_monspecs = {
-+ .manufacturer = "LG",
-+ .monitor = "LB043WQ1",
-+
-+ .modedb = at91_tft_vga_modes,
-+ .modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
-+ .hfmin = 15000,
-+ .hfmax = 17640,
-+ .vfmin = 57,
-+ .vfmax = 67,
-+};
-+
-+#define AT91SAM9G45_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
-+ | ATMEL_LCDC_DISTYPE_TFT \
-+ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
-+
-+/* Driver datas */
-+static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
-+ .lcdcon_is_backlight = true,
-+ .default_bpp = 32,
-+ .default_dmacon = ATMEL_LCDC_DMAEN,
-+ .default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
-+ .default_monspecs = &at91fb_default_monspecs,
-+ .guard_time = 9,
-+ .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
-+};
-+
-+#else
-+static struct atmel_lcdfb_info __initdata ek_lcdc_data;
-+#endif
-+
-+
-+/*
-+ * Touchscreen
-+ */
-+static struct at91_tsadcc_data ek_tsadcc_data = {
-+ .adc_clock = 300000,
-+ .pendet_debounce = 0x0d,
-+ .ts_sample_hold_time = 0x0a,
-+};
-+
-+
-+/*
-+ * GPIO Buttons
-+ */
-+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-+static struct gpio_keys_button ek_buttons[] = {
-+ { /* BP1, "leftclic" */
-+ .code = BTN_LEFT,
-+ .gpio = AT91_PIN_PB6,
-+ .active_low = 1,
-+ .desc = "left_click",
-+ .wakeup = 1,
-+ },
-+ { /* BP2, "rightclic" */
-+ .code = BTN_RIGHT,
-+ .gpio = AT91_PIN_PB7,
-+ .active_low = 1,
-+ .desc = "right_click",
-+ .wakeup = 1,
-+ },
-+ /* BP3, "joystick" */
-+ {
-+ .code = KEY_LEFT,
-+ .gpio = AT91_PIN_PB14,
-+ .active_low = 1,
-+ .desc = "Joystick Left",
-+ },
-+ {
-+ .code = KEY_RIGHT,
-+ .gpio = AT91_PIN_PB15,
-+ .active_low = 1,
-+ .desc = "Joystick Right",
-+ },
-+ {
-+ .code = KEY_UP,
-+ .gpio = AT91_PIN_PB16,
-+ .active_low = 1,
-+ .desc = "Joystick Up",
-+ },
-+ {
-+ .code = KEY_DOWN,
-+ .gpio = AT91_PIN_PB17,
-+ .active_low = 1,
-+ .desc = "Joystick Down",
-+ },
-+ {
-+ .code = KEY_ENTER,
-+ .gpio = AT91_PIN_PB18,
-+ .active_low = 1,
-+ .desc = "Joystick Press",
-+ },
-+};
-+
-+static struct gpio_keys_platform_data ek_button_data = {
-+ .buttons = ek_buttons,
-+ .nbuttons = ARRAY_SIZE(ek_buttons),
-+};
-+
-+static struct platform_device ek_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &ek_button_data,
-+ }
-+};
-+
-+static void __init ek_add_device_buttons(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(ek_buttons); i++) {
-+ at91_set_GPIO_periph(ek_buttons[i].gpio, 1);
-+ at91_set_deglitch(ek_buttons[i].gpio, 1);
-+ }
-+
-+ platform_device_register(&ek_button_device);
-+}
-+#else
-+static void __init ek_add_device_buttons(void) {}
-+#endif
-+
-+
-+/*
-+ * AC97
-+ * reset_pin is not connected: NRST
-+ */
-+static struct ac97c_platform_data ek_ac97_data = {
-+};
-+
-+
-+/*
-+ * LEDs ... these could all be PWM-driven, for variable brightness
-+ */
-+static struct gpio_led ek_leds[] = {
-+ { /* "top" led, red, powerled */
-+ .name = "d8",
-+ .gpio = AT91_PIN_PD30,
-+ .default_trigger = "heartbeat",
-+ },
-+ { /* "left" led, green, userled2, pwm3 */
-+ .name = "d6",
-+ .gpio = AT91_PIN_PD0,
-+ .active_low = 1,
-+ .default_trigger = "nand-disk",
-+ },
-+#if !(defined(CONFIG_LEDS_ATMEL_PWM) || defined(CONFIG_LEDS_ATMEL_PWM_MODULE))
-+ { /* "right" led, green, userled1, pwm1 */
-+ .name = "d7",
-+ .gpio = AT91_PIN_PD31,
-+ .active_low = 1,
-+ .default_trigger = "mmc0",
-+ },
-+#endif
-+};
-+
-+
-+/*
-+ * PWM Leds
-+ */
-+static struct gpio_led ek_pwm_led[] = {
-+#if defined(CONFIG_LEDS_ATMEL_PWM) || defined(CONFIG_LEDS_ATMEL_PWM_MODULE)
-+ { /* "right" led, green, userled1, pwm1 */
-+ .name = "d7",
-+ .gpio = 1, /* is PWM channel number */
-+ .active_low = 1,
-+ .default_trigger = "none",
-+ },
-+#endif
-+};
-+
-+
-+
-+static void __init ek_board_init(void)
-+{
-+ /* Serial */
-+ at91_add_device_serial();
-+ /* USB HS Host */
-+ at91_add_device_usbh_ohci(&ek_usbh_hs_data);
-+ at91_add_device_usbh_ehci(&ek_usbh_hs_data);
-+ /* USB HS Device */
-+ at91_add_device_usba(&ek_usba_udc_data);
-+ /* SPI */
-+ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
-+ /* MMC */
-+ at91_add_device_mci(0, &mci0_data);
-+ at91_add_device_mci(1, &mci1_data);
-+ /* Ethernet */
-+ at91_add_device_eth(&ek_macb_data);
-+ /* NAND */
-+ ek_add_device_nand();
-+ /* I2C */
-+ at91_add_device_i2c(0, NULL, 0);
-+ /* LCD Controller */
-+ at91_add_device_lcdc(&ek_lcdc_data);
-+ /* Touch Screen */
-+ at91_add_device_tsadcc(&ek_tsadcc_data);
-+ /* Push Buttons */
-+ ek_add_device_buttons();
-+ /* AC97 */
-+ at91_add_device_ac97(&ek_ac97_data);
-+ /* LEDs */
-+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
-+ at91_pwm_leds(ek_pwm_led, ARRAY_SIZE(ek_pwm_led));
-+}
-+
-+MACHINE_START(AT91SAM9G45EKES, "Atmel AT91SAM9G45-EKES")
-+ /* Maintainer: Atmel */
-+ .phys_io = AT91_BASE_SYS,
-+ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
-+ .boot_params = AT91_SDRAM_BASE + 0x100,
-+ .timer = &at91sam926x_timer,
-+ .map_io = ek_map_io,
-+ .init_irq = ek_init_irq,
-+ .init_machine = ek_board_init,
-+MACHINE_END
-Index: linux-2.6.30/arch/arm/mach-at91/generic.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/generic.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/generic.h 2011-02-01 16:40:30.141043034 +0100
-@@ -14,6 +14,7 @@
- extern void __init at91sam9261_initialize(unsigned long main_clock);
- extern void __init at91sam9263_initialize(unsigned long main_clock);
- extern void __init at91sam9rl_initialize(unsigned long main_clock);
-+extern void __init at91sam9g45_initialize(unsigned long main_clock);
- extern void __init at91x40_initialize(unsigned long main_clock);
- extern void __init at91cap9_initialize(unsigned long main_clock);
- extern void __init at572d940hf_initialize(unsigned long main_clock);
-@@ -24,6 +25,7 @@
- extern void __init at91sam9261_init_interrupts(unsigned int priority[]);
- extern void __init at91sam9263_init_interrupts(unsigned int priority[]);
- extern void __init at91sam9rl_init_interrupts(unsigned int priority[]);
-+extern void __init at91sam9g45_init_interrupts(unsigned int priority[]);
- extern void __init at91x40_init_interrupts(unsigned int priority[]);
- extern void __init at91cap9_init_interrupts(unsigned int priority[]);
- extern void __init at572d940hf_init_interrupts(unsigned int priority[]);
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/board.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/board.h 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/board.h 2011-02-01 16:40:30.165043750 +0100
-@@ -37,6 +37,8 @@
- #include <linux/leds.h>
- #include <linux/spi/spi.h>
- #include <linux/usb/atmel_usba_udc.h>
-+#include <linux/atmel-mci.h>
-+#include <sound/atmel-ac97c.h>
-
- /* USB Device */
- struct at91_udc_data {
-@@ -63,6 +65,7 @@
- extern void __init at91_add_device_cf(struct at91_cf_data *data);
-
- /* MMC / SD */
-+ /* at91_mci platform config */
- struct at91_mmc_data {
- u8 det_pin; /* card detect IRQ */
- unsigned slot_b:1; /* uses Slot B */
-@@ -72,6 +75,9 @@
- };
- extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data);
-
-+ /* atmel-mci platform config */
-+extern void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data);
-+
- /* Ethernet (EMAC & MACB) */
- struct at91_eth_data {
- u32 phy_mask;
-@@ -80,7 +86,8 @@
- };
- extern void __init at91_add_device_eth(struct at91_eth_data *data);
-
--#if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT572D940HF)
-+#if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9) \
-+ || defined(CONFIG_ARCH_AT91SAM9G45) || defined(CONFIG_ARCH_AT572D940HF)
- #define eth_platform_data at91_eth_data
- #endif
-
-@@ -90,6 +97,8 @@
- u8 vbus_pin[2]; /* port power-control pin */
- };
- extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
-+extern void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data);
-+extern void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data);
-
- /* NAND / SmartMedia */
- struct atmel_nand_data {
-@@ -105,7 +114,11 @@
- extern void __init at91_add_device_nand(struct atmel_nand_data *data);
-
- /* I2C*/
-+#if defined(CONFIG_ARCH_AT91SAM9G45)
-+extern void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices);
-+#else
- extern void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices);
-+#endif
-
- /* SPI */
- extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
-@@ -168,16 +181,18 @@
- extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
-
- /* AC97 */
--struct atmel_ac97_data {
-- u8 reset_pin; /* reset */
--};
--extern void __init at91_add_device_ac97(struct atmel_ac97_data *data);
-+extern void __init at91_add_device_ac97(struct ac97c_platform_data *data);
-
- /* ISI */
- extern void __init at91_add_device_isi(void);
-
- /* Touchscreen Controller */
--extern void __init at91_add_device_tsadcc(void);
-+struct at91_tsadcc_data {
-+ unsigned int adc_clock;
-+ u8 pendet_debounce;
-+ u8 ts_sample_hold_time;
-+};
-+extern void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data);
-
- /* LEDs */
- extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
-Index: linux-2.6.30/drivers/video/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/video/Kconfig 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/video/Kconfig 2011-02-01 16:40:30.145073648 +0100
-@@ -944,7 +944,7 @@
-
- config FB_ATMEL
- tristate "AT91/AT32 LCD Controller support"
-- depends on FB && (ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_AT91CAP9 || AVR32)
-+ depends on FB && (ARCH_AT91SAM9261 || ARCH_AT91SAM9G10 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 || ARCH_AT91CAP9 || AVR32)
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-@@ -960,7 +960,7 @@
-
- config FB_ATMEL_STN
- bool "Use a STN display with AT91/AT32 LCD Controller"
-- depends on FB_ATMEL && MACH_AT91SAM9261EK
-+ depends on FB_ATMEL && (MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK)
- default n
- help
- Say Y if you want to connect a STN LCD display to the AT91/AT32 LCD
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9261.h
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/include/mach/at91sam9261.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/at91sam9261.h 2011-02-01 16:40:30.141043034 +0100
-@@ -95,6 +95,9 @@
- #define AT91SAM9261_SRAM_BASE 0x00300000 /* Internal SRAM base address */
- #define AT91SAM9261_SRAM_SIZE 0x00028000 /* Internal SRAM size (160Kb) */
-
-+#define AT91SAM9G10_SRAM_BASE AT91SAM9261_SRAM_BASE /* Internal SRAM base address */
-+#define AT91SAM9G10_SRAM_SIZE 0x00004000 /* Internal SRAM size (16Kb) */
-+
- #define AT91SAM9261_ROM_BASE 0x00400000 /* Internal ROM base address */
- #define AT91SAM9261_ROM_SIZE SZ_32K /* Internal ROM size (32Kb) */
-
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9261.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/at91sam9261.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9261.c 2011-02-01 16:40:30.145073648 +0100
-@@ -16,6 +16,7 @@
- #include <asm/irq.h>
- #include <asm/mach/arch.h>
- #include <asm/mach/map.h>
-+#include <mach/cpu.h>
- #include <mach/at91sam9261.h>
- #include <mach/at91_pmc.h>
- #include <mach/at91_rstc.h>
-@@ -30,7 +31,11 @@
- .pfn = __phys_to_pfn(AT91_BASE_SYS),
- .length = SZ_16K,
- .type = MT_DEVICE,
-- }, {
-+ },
-+};
-+
-+static struct map_desc at91sam9261_sram_desc[] __initdata = {
-+ {
- .virtual = AT91_IO_VIRT_BASE - AT91SAM9261_SRAM_SIZE,
- .pfn = __phys_to_pfn(AT91SAM9261_SRAM_BASE),
- .length = AT91SAM9261_SRAM_SIZE,
-@@ -38,6 +43,15 @@
- },
- };
-
-+static struct map_desc at91sam9g10_sram_desc[] __initdata = {
-+ {
-+ .virtual = AT91_IO_VIRT_BASE - AT91SAM9G10_SRAM_SIZE,
-+ .pfn = __phys_to_pfn(AT91SAM9G10_SRAM_BASE),
-+ .length = AT91SAM9G10_SRAM_SIZE,
-+ .type = MT_DEVICE,
-+ },
-+};
-+
- /* --------------------------------------------------------------------
- * Clocks
- * -------------------------------------------------------------------- */
-@@ -263,6 +277,12 @@
- /* Map peripherals */
- iotable_init(at91sam9261_io_desc, ARRAY_SIZE(at91sam9261_io_desc));
-
-+ if (cpu_is_at91sam9g10())
-+ iotable_init(at91sam9g10_sram_desc, ARRAY_SIZE(at91sam9g10_sram_desc));
-+ else
-+ iotable_init(at91sam9261_sram_desc, ARRAY_SIZE(at91sam9261_sram_desc));
-+
-+
- at91_arch_reset = at91sam9261_reset;
- pm_power_off = at91sam9261_poweroff;
- at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
-Index: linux-2.6.30/arch/arm/mach-at91/pm.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/pm.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/pm.c 2011-02-01 16:40:30.165043750 +0100
-@@ -40,9 +40,11 @@
- #define sdram_selfrefresh_enable() at91_sys_write(AT91_SDRAMC_SRR, 1)
- #define sdram_selfrefresh_disable() do {} while (0)
-
--#elif defined(CONFIG_ARCH_AT91CAP9)
-+#elif defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT91SAM9G45)
- #include <mach/at91cap9_ddrsdr.h>
--
-+#if defined(CONFIG_ARCH_AT91SAM9G45)
-+#define AT91_DDRSDRC AT91_DDRSDRC1
-+#endif
- static u32 saved_lpr;
-
- static inline void sdram_selfrefresh_enable(void)
-@@ -202,7 +204,8 @@
- pr_err("AT91: PM - Suspend-to-RAM with USB still active\n");
- return 0;
- }
-- } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || cpu_is_at91sam9263() || cpu_is_at91sam9g20()) {
-+ } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || cpu_is_at91sam9263()
-+ || cpu_is_at91sam9g20() || cpu_is_at91sam9g10()) {
- if ((scsr & (AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP)) != 0) {
- pr_err("AT91: PM - Suspend-to-RAM with USB still active\n");
- return 0;
-Index: linux-2.6.30/drivers/video/atmel_lcdfb.c
-===================================================================
---- linux-2.6.30.orig/drivers/video/atmel_lcdfb.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/video/atmel_lcdfb.c 2011-02-01 16:40:30.165043750 +0100
-@@ -182,7 +182,8 @@
- {
- unsigned long value;
-
-- if (!(cpu_is_at91sam9261() || cpu_is_at32ap7000()))
-+ if (!(cpu_is_at91sam9261() || cpu_is_at91sam9g10()
-+ || cpu_is_at32ap7000()))
- return xres;
-
- value = xres;
-@@ -480,6 +481,7 @@
- unsigned long value;
- unsigned long clk_value_khz;
- unsigned long bits_per_line;
-+ unsigned long pix_factor = 2;
-
- might_sleep();
-
-@@ -512,20 +514,24 @@
- /* Now, the LCDC core... */
-
- /* Set pixel clock */
-+ if (cpu_is_at91sam9g45() && !cpu_is_at91sam9g45es())
-+ pix_factor = 1;
-+
- clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
-
- value = DIV_ROUND_UP(clk_value_khz, PICOS2KHZ(info->var.pixclock));
-
-- if (value < 2) {
-+ if (value < pix_factor) {
- dev_notice(info->device, "Bypassing pixel clock divider\n");
- lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1, ATMEL_LCDC_BYPASS);
- } else {
-- value = (value / 2) - 1;
-+ value = (value / pix_factor) - 1;
- dev_dbg(info->device, " * programming CLKVAL = 0x%08lx\n",
- value);
- lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1,
- value << ATMEL_LCDC_CLKVAL_OFFSET);
-- info->var.pixclock = KHZ2PICOS(clk_value_khz / (2 * (value + 1)));
-+ info->var.pixclock =
-+ KHZ2PICOS(clk_value_khz / (pix_factor * (value + 1)));
- dev_dbg(info->device, " updated pixclk: %lu KHz\n",
- PICOS2KHZ(info->var.pixclock));
- }
-@@ -821,7 +827,8 @@
- info->fix = atmel_lcdfb_fix;
-
- /* Enable LCDC Clocks */
-- if (cpu_is_at91sam9261() || cpu_is_at32ap7000()) {
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()
-+ || cpu_is_at32ap7000()) {
- sinfo->bus_clk = clk_get(dev, "hck1");
- if (IS_ERR(sinfo->bus_clk)) {
- ret = PTR_ERR(sinfo->bus_clk);
-Index: linux-2.6.30/drivers/video/backlight/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/video/backlight/Kconfig 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/video/backlight/Kconfig 2011-02-01 16:40:30.149044200 +0100
-@@ -110,7 +110,7 @@
- config BACKLIGHT_ATMEL_LCDC
- bool "Atmel LCDC Contrast-as-Backlight control"
- depends on BACKLIGHT_CLASS_DEVICE && FB_ATMEL
-- default y if MACH_SAM9261EK || MACH_SAM9263EK
-+ default y if MACH_SAM9261EK || MACH_SAM9G10EK || MACH_SAM9263EK
- help
- This provides a backlight control internal to the Atmel LCDC
- driver. If the LCD "contrast control" on your board is wired
-Index: linux-2.6.30/drivers/usb/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/usb/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/usb/Kconfig 2011-02-01 16:40:30.149044200 +0100
-@@ -57,6 +57,7 @@
- default y if PPC_83xx
- default y if SOC_AU1200
- default y if ARCH_IXP4XX
-+ default y if ARCH_AT91SAM9G45
- default PCI
-
- # ARM SA1111 chips have a non-PCI based "OHCI-compatible" USB host interface.
-Index: linux-2.6.30/drivers/usb/host/ehci-atmel.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/drivers/usb/host/ehci-atmel.c 2011-02-01 16:40:30.149044200 +0100
-@@ -0,0 +1,230 @@
-+/*
-+ * Driver for EHCI UHP on Atmel chips
-+ *
-+ * Copyright (C) 2009 Atmel Corporation,
-+ * Nicolas Ferre <nicolas.ferre at atmel.com>
-+ *
-+ * Based on various ehci-*.c drivers
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+
-+/* interface and function clocks */
-+static struct clk *iclk, *fclk;
-+static int clocked;
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void atmel_start_clock(void)
-+{
-+ clk_enable(iclk);
-+ clk_enable(fclk);
-+ clocked = 1;
-+}
-+
-+static void atmel_stop_clock(void)
-+{
-+ clk_disable(fclk);
-+ clk_disable(iclk);
-+ clocked = 0;
-+}
-+
-+static void atmel_start_ehci(struct platform_device *pdev)
-+{
-+ dev_dbg(&pdev->dev, "start\n");
-+ atmel_start_clock();
-+}
-+
-+static void atmel_stop_ehci(struct platform_device *pdev)
-+{
-+ dev_dbg(&pdev->dev, "stop\n");
-+ atmel_stop_clock();
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int ehci_atmel_setup(struct usb_hcd *hcd)
-+{
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
-+ int retval = 0;
-+
-+ /* registers start at offset 0x0 */
-+ ehci->caps = hcd->regs;
-+ ehci->regs = hcd->regs +
-+ HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase));
-+ dbg_hcs_params(ehci, "reset");
-+ dbg_hcc_params(ehci, "reset");
-+
-+ /* cache this readonly data; minimize chip reads */
-+ ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
-+
-+ retval = ehci_halt(ehci);
-+ if (retval)
-+ return retval;
-+
-+ /* data structure init */
-+ retval = ehci_init(hcd);
-+ if (retval)
-+ return retval;
-+
-+ ehci->sbrn = 0x20;
-+
-+ ehci_reset(ehci);
-+ ehci_port_power(ehci, 0);
-+
-+ return retval;
-+}
-+
-+static const struct hc_driver ehci_atmel_hc_driver = {
-+ .description = hcd_name,
-+ .product_desc = "Atmel EHCI UHP HS",
-+ .hcd_priv_size = sizeof(struct ehci_hcd),
-+
-+ /* generic hardware linkage */
-+ .irq = ehci_irq,
-+ .flags = HCD_MEMORY | HCD_USB2,
-+
-+ /* basic lifecycle operations */
-+ .reset = ehci_atmel_setup,
-+ .start = ehci_run,
-+ .stop = ehci_stop,
-+ .shutdown = ehci_shutdown,
-+
-+ /* managing i/o requests and associated device resources */
-+ .urb_enqueue = ehci_urb_enqueue,
-+ .urb_dequeue = ehci_urb_dequeue,
-+ .endpoint_disable = ehci_endpoint_disable,
-+
-+ /* scheduling support */
-+ .get_frame_number = ehci_get_frame,
-+
-+ /* root hub support */
-+ .hub_status_data = ehci_hub_status_data,
-+ .hub_control = ehci_hub_control,
-+ .bus_suspend = ehci_bus_suspend,
-+ .bus_resume = ehci_bus_resume,
-+ .relinquish_port = ehci_relinquish_port,
-+ .port_handed_over = ehci_port_handed_over,
-+};
-+
-+static int __init ehci_atmel_drv_probe(struct platform_device *pdev)
-+{
-+ struct usb_hcd *hcd;
-+ const struct hc_driver *driver = &ehci_atmel_hc_driver;
-+ struct resource *res;
-+ int irq;
-+ int retval;
-+
-+ if (usb_disabled())
-+ return -ENODEV;
-+
-+ pr_debug("Initializing Atmel-SoC USB Host Controller\n");
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq <= 0) {
-+ dev_err(&pdev->dev,
-+ "Found HC with no IRQ. Check %s setup!\n",
-+ dev_name(&pdev->dev));
-+ retval = -ENODEV;
-+ goto fail_create_hcd;
-+ }
-+
-+ hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
-+ if (!hcd) {
-+ retval = -ENOMEM;
-+ goto fail_create_hcd;
-+ }
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(&pdev->dev,
-+ "Found HC with no register addr. Check %s setup!\n",
-+ dev_name(&pdev->dev));
-+ retval = -ENODEV;
-+ goto fail_request_resource;
-+ }
-+ hcd->rsrc_start = res->start;
-+ hcd->rsrc_len = res->end - res->start + 1;
-+
-+ if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len,
-+ driver->description)) {
-+ dev_dbg(&pdev->dev, "controller already in use\n");
-+ retval = -EBUSY;
-+ goto fail_request_resource;
-+ }
-+
-+ hcd->regs = ioremap_nocache(hcd->rsrc_start, hcd->rsrc_len);
-+ if (hcd->regs == NULL) {
-+ dev_dbg(&pdev->dev, "error mapping memory\n");
-+ retval = -EFAULT;
-+ goto fail_ioremap;
-+ }
-+
-+ iclk = clk_get(&pdev->dev, "ehci_clk");
-+ if (IS_ERR(iclk)) {
-+ dev_err(&pdev->dev, "Error getting interface clock\n");
-+ retval = -ENOENT;
-+ goto fail_get_iclk;
-+ }
-+ fclk = clk_get(&pdev->dev, "uhpck");
-+ if (IS_ERR(fclk)) {
-+ dev_err(&pdev->dev, "Error getting function clock\n");
-+ retval = -ENOENT;
-+ goto fail_get_fclk;
-+ }
-+
-+ atmel_start_ehci(pdev);
-+
-+ retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
-+ if (retval)
-+ goto fail_add_hcd;
-+
-+ return retval;
-+
-+fail_add_hcd:
-+ atmel_stop_ehci(pdev);
-+ clk_put(fclk);
-+fail_get_fclk:
-+ clk_put(iclk);
-+fail_get_iclk:
-+ iounmap(hcd->regs);
-+fail_ioremap:
-+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-+fail_request_resource:
-+ usb_put_hcd(hcd);
-+fail_create_hcd:
-+ dev_err(&pdev->dev, "init %s fail, %d\n",
-+ dev_name(&pdev->dev), retval);
-+
-+ return retval;
-+}
-+
-+static int __exit ehci_atmel_drv_remove(struct platform_device *pdev)
-+{
-+ struct usb_hcd *hcd = platform_get_drvdata(pdev);
-+
-+ ehci_shutdown(hcd);
-+ usb_remove_hcd(hcd);
-+ iounmap(hcd->regs);
-+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-+ usb_put_hcd(hcd);
-+
-+ atmel_stop_ehci(pdev);
-+ clk_put(fclk);
-+ clk_put(iclk);
-+ fclk = iclk = NULL;
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ehci_atmel_driver = {
-+ .probe = ehci_atmel_drv_probe,
-+ .remove = __exit_p(ehci_atmel_drv_remove),
-+ .shutdown = usb_hcd_platform_shutdown,
-+ .driver.name = "atmel-ehci",
-+};
-Index: linux-2.6.30/drivers/usb/host/ehci-hcd.c
-===================================================================
---- linux-2.6.30.orig/drivers/usb/host/ehci-hcd.c 2011-02-01 16:39:20.000000000 +0100
-+++ linux-2.6.30/drivers/usb/host/ehci-hcd.c 2011-02-01 16:40:30.149044200 +0100
-@@ -1075,6 +1075,11 @@
- #define PLATFORM_DRIVER ixp4xx_ehci_driver
- #endif
-
-+#ifdef CONFIG_ARCH_AT91
-+#include "ehci-atmel.c"
-+#define PLATFORM_DRIVER ehci_atmel_driver
-+#endif
-+
- #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \
- !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER)
- #error "missing bus glue for ehci-hcd"
-Index: linux-2.6.30/drivers/usb/gadget/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/usb/gadget/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/usb/gadget/Kconfig 2011-02-01 16:40:30.149044200 +0100
-@@ -124,7 +124,7 @@
-
- config USB_GADGET_AT91
- boolean "Atmel AT91 USB Device Port"
-- depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9
-+ depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45
- select USB_GADGET_SELECTED
- help
- Many Atmel AT91 processors (such as the AT91RM2000) have a
-@@ -143,7 +143,7 @@
- config USB_GADGET_ATMEL_USBA
- boolean "Atmel USBA"
- select USB_GADGET_DUALSPEED
-- depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL
-+ depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
- help
- USBA is the integrated high-speed USB Device controller on
- the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
-Index: linux-2.6.30/drivers/usb/host/ohci-at91.c
-===================================================================
---- linux-2.6.30.orig/drivers/usb/host/ohci-at91.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/usb/host/ohci-at91.c 2011-02-01 16:40:30.149044200 +0100
-@@ -35,7 +35,7 @@
-
- static void at91_start_clock(void)
- {
-- if (cpu_is_at91sam9261())
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10())
- clk_enable(hclk);
- clk_enable(iclk);
- clk_enable(fclk);
-@@ -46,7 +46,7 @@
- {
- clk_disable(fclk);
- clk_disable(iclk);
-- if (cpu_is_at91sam9261())
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10())
- clk_disable(hclk);
- clocked = 0;
- }
-@@ -142,20 +142,20 @@
-
- iclk = clk_get(&pdev->dev, "ohci_clk");
- fclk = clk_get(&pdev->dev, "uhpck");
-- if (cpu_is_at91sam9261())
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10())
- hclk = clk_get(&pdev->dev, "hck0");
-
- at91_start_hc(pdev);
- ohci_hcd_init(hcd_to_ohci(hcd));
-
-- retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_DISABLED);
-+ retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_SHARED);
- if (retval == 0)
- return retval;
-
- /* Error handling */
- at91_stop_hc(pdev);
-
-- if (cpu_is_at91sam9261())
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10())
- clk_put(hclk);
- clk_put(fclk);
- clk_put(iclk);
-@@ -192,7 +192,7 @@
- release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
- usb_put_hcd(hcd);
-
-- if (cpu_is_at91sam9261())
-+ if (cpu_is_at91sam9261() || cpu_is_at91sam9g10())
- clk_put(hclk);
- clk_put(fclk);
- clk_put(iclk);
-Index: linux-2.6.30/drivers/usb/gadget/at91_udc.c
-===================================================================
---- linux-2.6.30.orig/drivers/usb/gadget/at91_udc.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/usb/gadget/at91_udc.c 2011-02-01 16:40:30.149044200 +0100
-@@ -892,7 +892,7 @@
-
- txvc |= AT91_UDP_TXVC_PUON;
- at91_udp_write(udc, AT91_UDP_TXVC, txvc);
-- } else if (cpu_is_at91sam9261()) {
-+ } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
- u32 usbpucr;
-
- usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR);
-@@ -910,7 +910,7 @@
-
- txvc &= ~AT91_UDP_TXVC_PUON;
- at91_udp_write(udc, AT91_UDP_TXVC, txvc);
-- } else if (cpu_is_at91sam9261()) {
-+ } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
- u32 usbpucr;
-
- usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR);
-@@ -1692,7 +1692,7 @@
- udc->ep[3].maxpacket = 64;
- udc->ep[4].maxpacket = 512;
- udc->ep[5].maxpacket = 512;
-- } else if (cpu_is_at91sam9261()) {
-+ } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
- udc->ep[3].maxpacket = 64;
- } else if (cpu_is_at91sam9263()) {
- udc->ep[0].maxpacket = 64;
-Index: linux-2.6.30/arch/arm/mach-at91/include/mach/at_hdmac.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/include/mach/at_hdmac.h 2011-02-01 16:40:30.152108635 +0100
-@@ -0,0 +1,102 @@
-+/*
-+ * Header file for the Atmel AHB DMA Controller driver
-+ *
-+ * Copyright (C) 2008 Atmel Corporation
-+ *
-+ * 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.
-+ */
-+#ifndef AT_HDMAC_H
-+#define AT_HDMAC_H
-+
-+#include <linux/dmaengine.h>
-+
-+/**
-+ * struct at_dma_platform_data - Controller configuration parameters
-+ * @nr_channels: Number of channels supported by hardware (max 8)
-+ * @cap_mask: dma_capability flags supported by the platform
-+ */
-+struct at_dma_platform_data {
-+ unsigned int nr_channels;
-+ dma_cap_mask_t cap_mask;
-+};
-+
-+/**
-+ * enum at_dma_slave_width - DMA slave register access width.
-+ * @AT_DMA_SLAVE_WIDTH_8BIT: Do 8-bit slave register accesses
-+ * @AT_DMA_SLAVE_WIDTH_16BIT: Do 16-bit slave register accesses
-+ * @AT_DMA_SLAVE_WIDTH_32BIT: Do 32-bit slave register accesses
-+ */
-+enum at_dma_slave_width {
-+ AT_DMA_SLAVE_WIDTH_8BIT = 0,
-+ AT_DMA_SLAVE_WIDTH_16BIT,
-+ AT_DMA_SLAVE_WIDTH_32BIT,
-+};
-+
-+/**
-+ * struct at_dma_slave - Controller-specific information about a slave
-+ * @dma_dev: required DMA master device
-+ * @tx_reg: physical address of data register used for
-+ * memory-to-peripheral transfers
-+ * @rx_reg: physical address of data register used for
-+ * peripheral-to-memory transfers
-+ * @reg_width: peripheral register width
-+ * @cfg: Platform-specific initializer for the CFG register
-+ * @ctrla: Platform-specific initializer for the CTRLA register
-+ */
-+struct at_dma_slave {
-+ struct device *dma_dev;
-+ dma_addr_t tx_reg;
-+ dma_addr_t rx_reg;
-+ enum at_dma_slave_width reg_width;
-+ u32 cfg;
-+ u32 ctrla;
-+};
-+
-+
-+/* Platform-configurable bits in CFG */
-+#define ATC_SRC_PER(h) (0xFU & (h)) /* Channel src rq associated with periph handshaking ifc h */
-+#define ATC_DST_PER(h) ((0xFU & (h)) << 4) /* Channel dst rq associated with periph handshaking ifc h */
-+#define ATC_SRC_REP (0x1 << 8) /* Source Replay Mod */
-+#define ATC_SRC_H2SEL (0x1 << 9) /* Source Handshaking Mod */
-+#define ATC_SRC_H2SEL_SW (0x0 << 9)
-+#define ATC_SRC_H2SEL_HW (0x1 << 9)
-+#define ATC_DST_REP (0x1 << 12) /* Destination Replay Mod */
-+#define ATC_DST_H2SEL (0x1 << 13) /* Destination Handshaking Mod */
-+#define ATC_DST_H2SEL_SW (0x0 << 13)
-+#define ATC_DST_H2SEL_HW (0x1 << 13)
-+#define ATC_SOD (0x1 << 16) /* Stop On Done */
-+#define ATC_LOCK_IF (0x1 << 20) /* Interface Lock */
-+#define ATC_LOCK_B (0x1 << 21) /* AHB Bus Lock */
-+#define ATC_LOCK_IF_L (0x1 << 22) /* Master Interface Arbiter Lock */
-+#define ATC_LOCK_IF_L_CHUNK (0x0 << 22)
-+#define ATC_LOCK_IF_L_BUFFER (0x1 << 22)
-+#define ATC_AHB_PROT_MASK (0x7 << 24) /* AHB Protection */
-+#define ATC_FIFOCFG_MASK (0x3 << 28) /* FIFO Request Configuration */
-+#define ATC_FIFOCFG_LARGESTBURST (0x0 << 28)
-+#define ATC_FIFOCFG_HALFFIFO (0x1 << 28)
-+#define ATC_FIFOCFG_ENOUGHSPACE (0x2 << 28)
-+
-+/* Platform-configurable bits in CTRLA */
-+#define ATC_SCSIZE_MASK (0x7 << 16) /* Source Chunk Transfer Size */
-+#define ATC_SCSIZE_1 (0x0 << 16)
-+#define ATC_SCSIZE_4 (0x1 << 16)
-+#define ATC_SCSIZE_8 (0x2 << 16)
-+#define ATC_SCSIZE_16 (0x3 << 16)
-+#define ATC_SCSIZE_32 (0x4 << 16)
-+#define ATC_SCSIZE_64 (0x5 << 16)
-+#define ATC_SCSIZE_128 (0x6 << 16)
-+#define ATC_SCSIZE_256 (0x7 << 16)
-+#define ATC_DCSIZE_MASK (0x7 << 20) /* Destination Chunk Transfer Size */
-+#define ATC_DCSIZE_1 (0x0 << 20)
-+#define ATC_DCSIZE_4 (0x1 << 20)
-+#define ATC_DCSIZE_8 (0x2 << 20)
-+#define ATC_DCSIZE_16 (0x3 << 20)
-+#define ATC_DCSIZE_32 (0x4 << 20)
-+#define ATC_DCSIZE_64 (0x5 << 20)
-+#define ATC_DCSIZE_128 (0x6 << 20)
-+#define ATC_DCSIZE_256 (0x7 << 20)
-+
-+#endif /* AT_HDMAC_H */
-Index: linux-2.6.30/drivers/dma/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/dma/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/dma/Kconfig 2011-02-01 16:40:30.152108635 +0100
-@@ -46,6 +46,14 @@
- Support the Synopsys DesignWare AHB DMA controller. This
- can be integrated in chips such as the Atmel AT32ap7000.
-
-+config AT_HDMAC
-+ tristate "Atmel AHB DMA support"
-+ depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
-+ select DMA_ENGINE
-+ help
-+ Support the Atmel AHB DMA controller. This can be integrated in
-+ chips such as the Atmel AT91SAM9RL.
-+
- config FSL_DMA
- tristate "Freescale Elo and Elo Plus DMA support"
- depends on FSL_SOC
-Index: linux-2.6.30/drivers/dma/Makefile
-===================================================================
---- linux-2.6.30.orig/drivers/dma/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/dma/Makefile 2011-02-01 16:40:30.152108635 +0100
-@@ -7,4 +7,5 @@
- obj-$(CONFIG_FSL_DMA) += fsldma.o
- obj-$(CONFIG_MV_XOR) += mv_xor.o
- obj-$(CONFIG_DW_DMAC) += dw_dmac.o
-+obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
- obj-$(CONFIG_MX3_IPU) += ipu/
-Index: linux-2.6.30/drivers/dma/at_hdmac.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/drivers/dma/at_hdmac.c 2011-02-01 16:40:30.161007816 +0100
-@@ -0,0 +1,1214 @@
-+/*
-+ * Driver for the Atmel AHB DMA Controller (aka HDMA or DMAC on AT91 systems)
-+ *
-+ * Copyright (C) 2008 Atmel Corporation
-+ *
-+ * 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 supports the Atmel AHB DMA Controller,
-+ *
-+ * The driver has currently been tested with the Atmel AT91SAM9RL
-+ * and AT91SAM9G45 series.
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/dmaengine.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/dmapool.h>
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+
-+#include "at_hdmac_regs.h"
-+
-+/*
-+ * Glossary
-+ * --------
-+ *
-+ * at_hdmac : Name of the ATmel AHB DMA Controller
-+ * at_dma_ / atdma : ATmel DMA controller entity related
-+ * atc_ / atchan : ATmel DMA Channel entity related
-+ */
-+
-+#define ATC_DEFAULT_CFG (ATC_FIFOCFG_HALFFIFO)
-+#define ATC_DEFAULT_CTRLA (0)
-+#define ATC_DEFAULT_CTRLB (ATC_SIF(0) \
-+ |ATC_DIF(1))
-+
-+/*
-+ * Initial number of descriptors to allocate for each channel. This could
-+ * be increased during dma usage.
-+ */
-+static unsigned int init_nr_desc_per_channel = 64;
-+module_param(init_nr_desc_per_channel, uint, 0644);
-+MODULE_PARM_DESC(init_nr_desc_per_channel,
-+ "initial descriptors per channel (default: 64)");
-+
-+
-+/* prototypes */
-+static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx);
-+
-+
-+/*----------------------------------------------------------------------*/
-+
-+static struct at_desc *atc_first_active(struct at_dma_chan *atchan)
-+{
-+ return list_first_entry(&atchan->active_list,
-+ struct at_desc, desc_node);
-+}
-+
-+static struct at_desc *atc_first_queued(struct at_dma_chan *atchan)
-+{
-+ return list_first_entry(&atchan->queue,
-+ struct at_desc, desc_node);
-+}
-+
-+/**
-+ * atc_alloc_descriptor - allocate and return an initilized descriptor
-+ * @chan: the channel to allocate descriptors for
-+ * @gfp_flags: GFP allocation flags
-+ *
-+ * Note: The ack-bit is positioned in the descriptor flag at creation time
-+ * to make initial allocation more convenient. This bit will be cleared
-+ * and control will be given to client at usage time (during
-+ * preparation functions).
-+ */
-+static struct at_desc *atc_alloc_descriptor(struct dma_chan *chan,
-+ gfp_t gfp_flags)
-+{
-+ struct at_desc *desc = NULL;
-+ struct at_dma *atdma = to_at_dma(chan->device);
-+ dma_addr_t phys;
-+
-+ desc = dma_pool_alloc(atdma->dma_desc_pool, gfp_flags, &phys);
-+ if (desc) {
-+ memset(desc, 0, sizeof(struct at_desc));
-+ dma_async_tx_descriptor_init(&desc->txd, chan);
-+ /* txd.flags will be overwritten in prep functions */
-+ desc->txd.flags = DMA_CTRL_ACK;
-+ desc->txd.tx_submit = atc_tx_submit;
-+ desc->txd.phys = phys;
-+ }
-+
-+ return desc;
-+}
-+
-+/**
-+ * atc_desc_get - get a unsused descriptor from free_list
-+ * @atchan: channel we want a new descriptor for
-+ */
-+static struct at_desc *atc_desc_get(struct at_dma_chan *atchan)
-+{
-+ struct at_desc *desc, *_desc;
-+ struct at_desc *ret = NULL;
-+ unsigned int i = 0;
-+ LIST_HEAD(tmp_list);
-+
-+ spin_lock_bh(&atchan->lock);
-+ list_for_each_entry_safe(desc, _desc, &atchan->free_list, desc_node) {
-+ i++;
-+ if (async_tx_test_ack(&desc->txd)) {
-+ list_del(&desc->desc_node);
-+ ret = desc;
-+ break;
-+ }
-+ dev_dbg(chan2dev(&atchan->chan_common),
-+ "desc %p not ACKed\n", desc);
-+ }
-+ spin_unlock_bh(&atchan->lock);
-+ dev_vdbg(chan2dev(&atchan->chan_common),
-+ "scanned %u descriptors on freelist\n", i);
-+
-+ /* no more descriptor available in initial pool: create one more */
-+ if (!ret) {
-+ ret = atc_alloc_descriptor(&atchan->chan_common, GFP_ATOMIC);
-+ if (ret) {
-+ spin_lock_bh(&atchan->lock);
-+ atchan->descs_allocated++;
-+ spin_unlock_bh(&atchan->lock);
-+ } else {
-+ dev_err(chan2dev(&atchan->chan_common),
-+ "not enough descriptors available\n");
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+/**
-+ * atc_desc_put - move a descriptor, including any children, to the free list
-+ * @atchan: channel we work on
-+ * @desc: descriptor, at the head of a chain, to move to free list
-+ */
-+static void atc_desc_put(struct at_dma_chan *atchan, struct at_desc *desc)
-+{
-+ if (desc) {
-+ struct at_desc *child;
-+
-+ spin_lock_bh(&atchan->lock);
-+ list_for_each_entry(child, &desc->txd.tx_list, desc_node)
-+ dev_vdbg(chan2dev(&atchan->chan_common),
-+ "moving child desc %p to freelist\n",
-+ child);
-+ list_splice_init(&desc->txd.tx_list, &atchan->free_list);
-+ dev_vdbg(chan2dev(&atchan->chan_common),
-+ "moving desc %p to freelist\n", desc);
-+ list_add(&desc->desc_node, &atchan->free_list);
-+ spin_unlock_bh(&atchan->lock);
-+ }
-+}
-+
-+/**
-+ * atc_assign_cookie - compute and assign new cookie
-+ * @atchan: channel we work on
-+ * @desc: descriptor to asign cookie for
-+ *
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static dma_cookie_t
-+atc_assign_cookie(struct at_dma_chan *atchan, struct at_desc *desc)
-+{
-+ dma_cookie_t cookie = atchan->chan_common.cookie;
-+
-+ if (++cookie < 0)
-+ cookie = 1;
-+
-+ atchan->chan_common.cookie = cookie;
-+ desc->txd.cookie = cookie;
-+
-+ return cookie;
-+}
-+
-+/**
-+ * atc_dostart - starts the DMA engine for real
-+ * @atchan: the channel we want to start
-+ * @first: first descriptor in the list we want to begin with
-+ *
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first)
-+{
-+ struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
-+
-+ /* ASSERT: channel is idle */
-+ if (atc_chan_is_enabled(atchan)) {
-+ dev_err(chan2dev(&atchan->chan_common),
-+ "BUG: Attempted to start non-idle channel\n");
-+ dev_err(chan2dev(&atchan->chan_common),
-+ " channel: s0x%x d0x%x ctrl0x%x:0x%x l0x%x\n",
-+ channel_readl(atchan, SADDR),
-+ channel_readl(atchan, DADDR),
-+ channel_readl(atchan, CTRLA),
-+ channel_readl(atchan, CTRLB),
-+ channel_readl(atchan, DSCR));
-+
-+ /* The tasklet will hopefully advance the queue... */
-+ return;
-+ }
-+
-+ vdbg_dump_regs(atchan);
-+
-+ /* clear any pending interrupt */
-+ while (dma_readl(atdma, EBCISR))
-+ cpu_relax();
-+
-+ channel_writel(atchan, SADDR, 0);
-+ channel_writel(atchan, DADDR, 0);
-+ channel_writel(atchan, CTRLA, 0);
-+ channel_writel(atchan, CTRLB, 0);
-+ channel_writel(atchan, DSCR, first->txd.phys);
-+ dma_writel(atdma, CHER, atchan->mask);
-+
-+ vdbg_dump_regs(atchan);
-+}
-+
-+/**
-+ * atc_chain_complete - finish work for one transaction chain
-+ * @atchan: channel we work on
-+ * @desc: descriptor at the head of the chain we want do complete
-+ *
-+ * Called with atchan->lock held and bh disabled */
-+static void
-+atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc)
-+{
-+ dma_async_tx_callback callback;
-+ void *param;
-+ struct dma_async_tx_descriptor *txd = &desc->txd;
-+
-+ dev_vdbg(chan2dev(&atchan->chan_common),
-+ "descriptor %u complete\n", txd->cookie);
-+
-+ atchan->completed_cookie = txd->cookie;
-+ callback = txd->callback;
-+ param = txd->callback_param;
-+
-+ /* move children to free_list */
-+ list_splice_init(&txd->tx_list, &atchan->free_list);
-+ /* move myself to free_list */
-+ list_move(&desc->desc_node, &atchan->free_list);
-+
-+ /* unmap dma addresses */
-+ if (!atchan->chan_common.private) {
-+ struct device *parent = chan2parent(&atchan->chan_common);
-+ if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
-+ if (txd->flags & DMA_COMPL_DEST_UNMAP_SINGLE)
-+ dma_unmap_single(parent,
-+ desc->lli.daddr,
-+ desc->len, DMA_FROM_DEVICE);
-+ else
-+ dma_unmap_page(parent,
-+ desc->lli.daddr,
-+ desc->len, DMA_FROM_DEVICE);
-+ }
-+ if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
-+ if (txd->flags & DMA_COMPL_SRC_UNMAP_SINGLE)
-+ dma_unmap_single(parent,
-+ desc->lli.saddr,
-+ desc->len, DMA_TO_DEVICE);
-+ else
-+ dma_unmap_page(parent,
-+ desc->lli.saddr,
-+ desc->len, DMA_TO_DEVICE);
-+ }
-+ }
-+
-+ /*
-+ * The API requires that no submissions are done from a
-+ * callback, so we don't need to drop the lock here
-+ */
-+ if (callback)
-+ callback(param);
-+
-+ dma_run_dependencies(txd);
-+}
-+
-+/**
-+ * atc_complete_all - finish work for all transactions
-+ * @atchan: channel to complete transactions for
-+ *
-+ * Eventually submit queued descriptors if any
-+ *
-+ * Assume channel is idle while calling this function
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static void atc_complete_all(struct at_dma_chan *atchan)
-+{
-+ struct at_desc *desc, *_desc;
-+ LIST_HEAD(list);
-+
-+ dev_vdbg(chan2dev(&atchan->chan_common), "complete all\n");
-+
-+ BUG_ON(atc_chan_is_enabled(atchan));
-+
-+ /*
-+ * Submit queued descriptors ASAP, i.e. before we go through
-+ * the completed ones.
-+ */
-+ if (!list_empty(&atchan->queue))
-+ atc_dostart(atchan, atc_first_queued(atchan));
-+ /* empty active_list now it is completed */
-+ list_splice_init(&atchan->active_list, &list);
-+ /* empty queue list by moving descriptors (if any) to active_list */
-+ list_splice_init(&atchan->queue, &atchan->active_list);
-+
-+ list_for_each_entry_safe(desc, _desc, &list, desc_node)
-+ atc_chain_complete(atchan, desc);
-+}
-+
-+/**
-+ * atc_cleanup_descriptors - cleanup up finished descriptors in active_list
-+ * @atchan: channel to be cleaned up
-+ *
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static void atc_cleanup_descriptors(struct at_dma_chan *atchan)
-+{
-+ struct at_desc *desc, *_desc;
-+ struct at_desc *child;
-+
-+ dev_vdbg(chan2dev(&atchan->chan_common), "cleanup descriptors\n");
-+
-+ list_for_each_entry_safe(desc, _desc, &atchan->active_list, desc_node) {
-+ if (!(desc->lli.ctrla & ATC_DONE))
-+ /* This one is currently in progress */
-+ return;
-+
-+ list_for_each_entry(child, &desc->txd.tx_list, desc_node)
-+ if (!(child->lli.ctrla & ATC_DONE))
-+ /* Currently in progress */
-+ return;
-+
-+ /*
-+ * No descriptors so far seem to be in progress, i.e.
-+ * this chain must be done.
-+ */
-+ atc_chain_complete(atchan, desc);
-+ }
-+}
-+
-+/**
-+ * atc_advance_work - at the end of a transaction, move forward
-+ * @atchan: channel where the transaction ended
-+ *
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static void atc_advance_work(struct at_dma_chan *atchan)
-+{
-+ dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n");
-+
-+ if (list_empty(&atchan->active_list) ||
-+ list_is_singular(&atchan->active_list)) {
-+ atc_complete_all(atchan);
-+ } else {
-+ atc_chain_complete(atchan, atc_first_active(atchan));
-+ /* advance work */
-+ atc_dostart(atchan, atc_first_active(atchan));
-+ }
-+}
-+
-+
-+/**
-+ * atc_handle_error - handle errors reported by DMA controller
-+ * @atchan: channel where error occurs
-+ *
-+ * Called with atchan->lock held and bh disabled
-+ */
-+static void atc_handle_error(struct at_dma_chan *atchan)
-+{
-+ struct at_desc *bad_desc;
-+ struct at_desc *child;
-+
-+ /*
-+ * The descriptor currently at the head of the active list is
-+ * broked. Since we don't have any way to report errors, we'll
-+ * just have to scream loudly and try to carry on.
-+ */
-+ bad_desc = atc_first_active(atchan);
-+ list_del_init(&bad_desc->desc_node);
-+
-+ /* As we are stopped, take advantage to push queued descriptors
-+ * in active_list */
-+ list_splice_init(&atchan->queue, atchan->active_list.prev);
-+
-+ /* Try to restart the controller */
-+ if (!list_empty(&atchan->active_list))
-+ atc_dostart(atchan, atc_first_active(atchan));
-+
-+ /*
-+ * KERN_CRITICAL may seem harsh, but since this only happens
-+ * when someone submits a bad physical address in a
-+ * descriptor, we should consider ourselves lucky that the
-+ * controller flagged an error instead of scribbling over
-+ * random memory locations.
-+ */
-+ dev_crit(chan2dev(&atchan->chan_common),
-+ "Bad descriptor submitted for DMA!\n");
-+ dev_crit(chan2dev(&atchan->chan_common),
-+ " cookie: %d\n", bad_desc->txd.cookie);
-+ atc_dump_lli(atchan, &bad_desc->lli);
-+ list_for_each_entry(child, &bad_desc->txd.tx_list, desc_node)
-+ atc_dump_lli(atchan, &child->lli);
-+
-+ /* Pretend the descriptor completed successfully */
-+ atc_chain_complete(atchan, bad_desc);
-+}
-+
-+
-+/*-- IRQ & Tasklet ---------------------------------------------------*/
-+
-+static void atc_tasklet(unsigned long data)
-+{
-+ struct at_dma_chan *atchan = (struct at_dma_chan *)data;
-+
-+ /* Channel cannot be enabled here */
-+ if (atc_chan_is_enabled(atchan)) {
-+ dev_err(chan2dev(&atchan->chan_common),
-+ "BUG: channel enabled in tasklet\n");
-+ return;
-+ }
-+
-+ spin_lock(&atchan->lock);
-+ if (test_and_clear_bit(0, &atchan->error_status))
-+ atc_handle_error(atchan);
-+ else
-+ atc_advance_work(atchan);
-+
-+ spin_unlock(&atchan->lock);
-+}
-+
-+static irqreturn_t at_dma_interrupt(int irq, void *dev_id)
-+{
-+ struct at_dma *atdma = (struct at_dma *)dev_id;
-+ struct at_dma_chan *atchan;
-+ int i;
-+ u32 status, pending, imr;
-+ int ret = IRQ_NONE;
-+
-+ do {
-+ imr = dma_readl(atdma, EBCIMR);
-+ status = dma_readl(atdma, EBCISR);
-+ pending = status & imr;
-+
-+ if (!pending)
-+ break;
-+
-+ dev_vdbg(atdma->dma_common.dev,
-+ "interrupt: status = 0x%08x, 0x%08x, 0x%08x\n",
-+ status, imr, pending);
-+
-+ for (i = 0; i < atdma->dma_common.chancnt; i++) {
-+ atchan = &atdma->chan[i];
-+ if (pending & (AT_DMA_CBTC(i) | AT_DMA_ERR(i))) {
-+ if (pending & AT_DMA_ERR(i)) {
-+ /* Disable channel on AHB error */
-+ dma_writel(atdma, CHDR, atchan->mask);
-+ /* Give information to tasklet */
-+ set_bit(0, &atchan->error_status);
-+ }
-+ tasklet_schedule(&atchan->tasklet);
-+ ret = IRQ_HANDLED;
-+ }
-+ }
-+
-+ } while (pending);
-+
-+ return ret;
-+}
-+
-+
-+/*-- DMA Engine API --------------------------------------------------*/
-+
-+/**
-+ * atc_tx_submit - set the prepared descriptor(s) to be executed by the engine
-+ * @desc: descriptor at the head of the transaction chain
-+ *
-+ * Queue chain if DMA engine is working already
-+ *
-+ * Cookie increment and adding to active_list or queue must be atomic
-+ */
-+static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx)
-+{
-+ struct at_desc *desc = txd_to_at_desc(tx);
-+ struct at_dma_chan *atchan = to_at_dma_chan(tx->chan);
-+ dma_cookie_t cookie;
-+
-+ spin_lock_bh(&atchan->lock);
-+ cookie = atc_assign_cookie(atchan, desc);
-+
-+ if (list_empty(&atchan->active_list)) {
-+ dev_vdbg(chan2dev(tx->chan), "tx_submit: started %u\n",
-+ desc->txd.cookie);
-+ atc_dostart(atchan, desc);
-+ list_add_tail(&desc->desc_node, &atchan->active_list);
-+ } else {
-+ dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
-+ desc->txd.cookie);
-+ list_add_tail(&desc->desc_node, &atchan->queue);
-+ }
-+
-+ spin_unlock_bh(&atchan->lock);
-+
-+ return cookie;
-+}
-+
-+/**
-+ * atc_prep_dma_memcpy - prepare a memcpy operation
-+ * @chan: the channel to prepare operation on
-+ * @dest: operation virtual destination address
-+ * @src: operation virtual source address
-+ * @len: operation length
-+ * @flags: tx descriptor status flags
-+ */
-+static struct dma_async_tx_descriptor *
-+atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
-+ size_t len, unsigned long flags)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ struct at_desc *desc = NULL;
-+ struct at_desc *first = NULL;
-+ struct at_desc *prev = NULL;
-+ size_t xfer_count;
-+ size_t offset;
-+ unsigned int src_width;
-+ unsigned int dst_width;
-+ u32 ctrla;
-+ u32 ctrlb;
-+
-+ dev_vdbg(chan2dev(chan), "prep_dma_memcpy: d0x%x s0x%x l0x%zx f0x%lx\n",
-+ dest, src, len, flags);
-+
-+ if (unlikely(!len)) {
-+ dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n");
-+ return NULL;
-+ }
-+
-+ ctrla = ATC_DEFAULT_CTRLA;
-+ ctrlb = ATC_DEFAULT_CTRLB
-+ | ATC_SRC_ADDR_MODE_INCR
-+ | ATC_DST_ADDR_MODE_INCR
-+ | ATC_FC_MEM2MEM;
-+
-+ /*
-+ * We can be a lot more clever here, but this should take care
-+ * of the most common optimization.
-+ */
-+ if (!((src | dest | len) & 3)) {
-+ ctrla |= ATC_SRC_WIDTH_WORD | ATC_DST_WIDTH_WORD;
-+ src_width = dst_width = 2;
-+ } else if (!((src | dest | len) & 1)) {
-+ ctrla |= ATC_SRC_WIDTH_HALFWORD | ATC_DST_WIDTH_HALFWORD;
-+ src_width = dst_width = 1;
-+ } else {
-+ ctrla |= ATC_SRC_WIDTH_BYTE | ATC_DST_WIDTH_BYTE;
-+ src_width = dst_width = 0;
-+ }
-+
-+ for (offset = 0; offset < len; offset += xfer_count << src_width) {
-+ xfer_count = min_t(size_t, (len - offset) >> src_width,
-+ ATC_BTSIZE_MAX);
-+
-+ desc = atc_desc_get(atchan);
-+ if (!desc)
-+ goto err_desc_get;
-+
-+ desc->lli.saddr = src + offset;
-+ desc->lli.daddr = dest + offset;
-+ desc->lli.ctrla = ctrla | xfer_count;
-+ desc->lli.ctrlb = ctrlb;
-+
-+ desc->txd.cookie = 0;
-+ async_tx_ack(&desc->txd);
-+
-+ if (!first) {
-+ first = desc;
-+ } else {
-+ /* inform the HW lli about chaining */
-+ prev->lli.dscr = desc->txd.phys;
-+ /* insert the link descriptor to the LD ring */
-+ list_add_tail(&desc->desc_node,
-+ &first->txd.tx_list);
-+ }
-+ prev = desc;
-+ }
-+
-+ /* First descriptor of the chain embedds additional information */
-+ first->txd.cookie = -EBUSY;
-+ first->len = len;
-+
-+ /* set end-of-link to the last link descriptor of list*/
-+ set_desc_eol(desc);
-+
-+ desc->txd.flags = flags; /* client is in control of this ack */
-+
-+ return &first->txd;
-+
-+err_desc_get:
-+ atc_desc_put(atchan, first);
-+ return NULL;
-+}
-+
-+
-+/**
-+ * atc_prep_slave_sg - prepare descriptors for a DMA_SLAVE transaction
-+ * @chan: DMA channel
-+ * @sgl: scatterlist to transfer to/from
-+ * @sg_len: number of entries in @scatterlist
-+ * @direction: DMA direction
-+ * @flags: tx descriptor status flags
-+ */
-+static struct dma_async_tx_descriptor *
-+atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
-+ unsigned int sg_len, enum dma_data_direction direction,
-+ unsigned long flags)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ struct at_dma_slave *atslave = chan->private;
-+ struct at_desc *first = NULL;
-+ struct at_desc *prev = NULL;
-+ u32 ctrla;
-+ u32 ctrlb;
-+ dma_addr_t reg;
-+ unsigned int reg_width;
-+ unsigned int mem_width;
-+ unsigned int i;
-+ struct scatterlist *sg;
-+ size_t total_len = 0;
-+
-+ dev_vdbg(chan2dev(chan), "prep_slave_sg: %s f0x%lx\n",
-+ direction == DMA_TO_DEVICE ? "TO DEVICE" : "FROM DEVICE",
-+ flags);
-+
-+ if (unlikely(!atslave || !sg_len)) {
-+ dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n");
-+ return NULL;
-+ }
-+
-+ reg_width = atslave->reg_width;
-+
-+ ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla;
-+ ctrlb = ATC_DEFAULT_CTRLB | ATC_IEN;
-+
-+ switch (direction) {
-+ case DMA_TO_DEVICE:
-+ ctrla |= ATC_DST_WIDTH(reg_width);
-+ ctrlb |= ATC_DST_ADDR_MODE_FIXED
-+ | ATC_SRC_ADDR_MODE_INCR
-+ | ATC_FC_MEM2PER;
-+ reg = atslave->tx_reg;
-+ for_each_sg(sgl, sg, sg_len, i) {
-+ struct at_desc *desc;
-+ u32 len;
-+ u32 mem;
-+
-+ desc = atc_desc_get(atchan);
-+ if (!desc)
-+ goto err_desc_get;
-+
-+ mem = sg_phys(sg);
-+ len = sg_dma_len(sg);
-+ mem_width = 2;
-+ if (unlikely(mem & 3 || len & 3))
-+ mem_width = 0;
-+
-+ desc->lli.saddr = mem;
-+ desc->lli.daddr = reg;
-+ desc->lli.ctrla = ctrla
-+ | ATC_SRC_WIDTH(mem_width)
-+ | len >> mem_width;
-+ desc->lli.ctrlb = ctrlb;
-+
-+ if (!first) {
-+ first = desc;
-+ } else {
-+ /* inform the HW lli about chaining */
-+ prev->lli.dscr = desc->txd.phys;
-+ /* insert the link descriptor to the LD ring */
-+ list_add_tail(&desc->desc_node,
-+ &first->txd.tx_list);
-+ }
-+ prev = desc;
-+ total_len += len;
-+ }
-+ break;
-+ case DMA_FROM_DEVICE:
-+ ctrla |= ATC_SRC_WIDTH(reg_width);
-+ ctrlb |= ATC_DST_ADDR_MODE_INCR
-+ | ATC_SRC_ADDR_MODE_FIXED
-+ | ATC_FC_PER2MEM;
-+
-+ reg = atslave->rx_reg;
-+ for_each_sg(sgl, sg, sg_len, i) {
-+ struct at_desc *desc;
-+ u32 len;
-+ u32 mem;
-+
-+ desc = atc_desc_get(atchan);
-+ if (!desc)
-+ goto err_desc_get;
-+
-+ mem = sg_phys(sg);
-+ len = sg_dma_len(sg);
-+ mem_width = 2;
-+ if (unlikely(mem & 3 || len & 3))
-+ mem_width = 0;
-+
-+ desc->lli.saddr = reg;
-+ desc->lli.daddr = mem;
-+ desc->lli.ctrla = ctrla
-+ | ATC_DST_WIDTH(mem_width)
-+ | len >> mem_width;
-+ desc->lli.ctrlb = ctrlb;
-+
-+ if (!first) {
-+ first = desc;
-+ } else {
-+ /* inform the HW lli about chaining */
-+ prev->lli.dscr = desc->txd.phys;
-+ /* insert the link descriptor to the LD ring */
-+ list_add_tail(&desc->desc_node,
-+ &first->txd.tx_list);
-+ }
-+ prev = desc;
-+ total_len += len;
-+ }
-+ break;
-+ default:
-+ return NULL;
-+ }
-+
-+ /* set end-of-link to the last link descriptor of list*/
-+ set_desc_eol(prev);
-+
-+ /* First descriptor of the chain embedds additional information */
-+ first->txd.cookie = -EBUSY;
-+ first->len = total_len;
-+
-+ /* last link descriptor of list is responsible of flags */
-+ prev->txd.flags = flags; /* client is in control of this ack */
-+
-+ return &first->txd;
-+
-+err_desc_get:
-+ dev_err(chan2dev(chan), "not enough descriptors available\n");
-+ atc_desc_put(atchan, first);
-+ return NULL;
-+}
-+
-+static void atc_terminate_all(struct dma_chan *chan)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ struct at_dma *atdma = to_at_dma(chan->device);
-+ struct at_desc *desc, *_desc;
-+ LIST_HEAD(list);
-+
-+ /*
-+ * This is only called when something went wrong elsewhere, so
-+ * we don't really care about the data. Just disable the
-+ * channel. We still have to poll the channel enable bit due
-+ * to AHB/HSB limitations.
-+ */
-+ spin_lock_bh(&atchan->lock);
-+
-+ dma_writel(atdma, CHDR, atchan->mask);
-+
-+ /* confirm that this channel is disabled */
-+ while (dma_readl(atdma, CHSR) & atchan->mask)
-+ cpu_relax();
-+
-+ /* active_list entries will end up before queued entries */
-+ list_splice_init(&atchan->queue, &list);
-+ list_splice_init(&atchan->active_list, &list);
-+
-+ spin_unlock_bh(&atchan->lock);
-+
-+ /* Flush all pending and queued descriptors */
-+ list_for_each_entry_safe(desc, _desc, &list, desc_node)
-+ atc_chain_complete(atchan, desc);
-+}
-+
-+/**
-+ * atc_is_tx_complete - poll for transaction completion
-+ * @chan: DMA channel
-+ * @cookie: transaction identifier to check status of
-+ * @done: if not %NULL, updated with last completed transaction
-+ * @used: if not %NULL, updated with last used transaction
-+ *
-+ * If @done and @used are passed in, upon return they reflect the driver
-+ * internal state and can be used with dma_async_is_complete() to check
-+ * the status of multiple cookies without re-checking hardware state.
-+ */
-+static enum dma_status
-+atc_is_tx_complete(struct dma_chan *chan,
-+ dma_cookie_t cookie,
-+ dma_cookie_t *done, dma_cookie_t *used)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ dma_cookie_t last_used;
-+ dma_cookie_t last_complete;
-+ enum dma_status ret;
-+
-+ dev_vdbg(chan2dev(chan), "is_tx_complete: %d (d%d, u%d)\n",
-+ cookie, done ? *done : 0, used ? *used : 0);
-+
-+ spin_lock_bh(atchan->lock);
-+
-+ last_complete = atchan->completed_cookie;
-+ last_used = chan->cookie;
-+
-+ ret = dma_async_is_complete(cookie, last_complete, last_used);
-+ if (ret != DMA_SUCCESS) {
-+ atc_cleanup_descriptors(atchan);
-+
-+ last_complete = atchan->completed_cookie;
-+ last_used = chan->cookie;
-+
-+ ret = dma_async_is_complete(cookie, last_complete, last_used);
-+ }
-+
-+ spin_unlock_bh(atchan->lock);
-+
-+ if (done)
-+ *done = last_complete;
-+ if (used)
-+ *used = last_used;
-+
-+ return ret;
-+}
-+
-+/**
-+ * atc_issue_pending - try to finish work
-+ * @chan: target DMA channel
-+ */
-+static void atc_issue_pending(struct dma_chan *chan)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+
-+ dev_vdbg(chan2dev(chan), "issue_pending\n");
-+
-+ if (!atc_chan_is_enabled(atchan)) {
-+ spin_lock_bh(&atchan->lock);
-+ atc_advance_work(atchan);
-+ spin_unlock_bh(&atchan->lock);
-+ }
-+}
-+
-+/**
-+ * atc_alloc_chan_resources - allocate resources for DMA channel
-+ * @chan: allocate descriptor resources for this channel
-+ * @client: current client requesting the channel be ready for requests
-+ *
-+ * return - the number of allocated descriptors
-+ */
-+static int atc_alloc_chan_resources(struct dma_chan *chan)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ struct at_dma *atdma = to_at_dma(chan->device);
-+ struct at_desc *desc;
-+ struct at_dma_slave *atslave;
-+ int i;
-+ u32 cfg;
-+ LIST_HEAD(tmp_list);
-+
-+ dev_vdbg(chan2dev(chan), "alloc_chan_resources\n");
-+
-+ /* ASSERT: channel is idle */
-+ if (atc_chan_is_enabled(atchan)) {
-+ dev_dbg(chan2dev(chan), "DMA channel not idle ?\n");
-+ return -EIO;
-+ }
-+
-+ cfg = ATC_DEFAULT_CFG;
-+
-+ atslave = chan->private;
-+ if (atslave) {
-+ /*
-+ * We need controller-specific data to set up slave
-+ * transfers.
-+ */
-+ BUG_ON(!atslave->dma_dev || atslave->dma_dev != atdma->dma_common.dev);
-+
-+ /* if cfg configuration specified take it instad of default */
-+ if (atslave->cfg)
-+ cfg = atslave->cfg;
-+ }
-+
-+ /* have we already been set up?
-+ * reconfigure channel but no need to reallocate descriptors */
-+ if (!list_empty(&atchan->free_list))
-+ return atchan->descs_allocated;
-+
-+ /* Allocate initial pool of descriptors */
-+ for (i = 0; i < init_nr_desc_per_channel; i++) {
-+ desc = atc_alloc_descriptor(chan, GFP_KERNEL);
-+ if (!desc) {
-+ dev_err(atdma->dma_common.dev,
-+ "Only %d initial descriptors\n", i);
-+ break;
-+ }
-+ list_add_tail(&desc->desc_node, &tmp_list);
-+ }
-+
-+ spin_lock_bh(&atchan->lock);
-+ atchan->descs_allocated = i;
-+ list_splice(&tmp_list, &atchan->free_list);
-+ atchan->completed_cookie = chan->cookie = 1;
-+ spin_unlock_bh(&atchan->lock);
-+
-+ /* channel parameters */
-+ channel_writel(atchan, CFG, cfg);
-+
-+ dev_dbg(chan2dev(chan),
-+ "alloc_chan_resources: allocated %d descriptors\n",
-+ atchan->descs_allocated);
-+
-+ return atchan->descs_allocated;
-+}
-+
-+/**
-+ * atc_free_chan_resources - free all channel resources
-+ * @chan: DMA channel
-+ */
-+static void atc_free_chan_resources(struct dma_chan *chan)
-+{
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+ struct at_dma *atdma = to_at_dma(chan->device);
-+ struct at_desc *desc, *_desc;
-+ LIST_HEAD(list);
-+
-+ dev_dbg(chan2dev(chan), "free_chan_resources: (descs allocated=%u)\n",
-+ atchan->descs_allocated);
-+
-+ /* ASSERT: channel is idle */
-+ BUG_ON(!list_empty(&atchan->active_list));
-+ BUG_ON(!list_empty(&atchan->queue));
-+ BUG_ON(atc_chan_is_enabled(atchan));
-+
-+ list_for_each_entry_safe(desc, _desc, &atchan->free_list, desc_node) {
-+ dev_vdbg(chan2dev(chan), " freeing descriptor %p\n", desc);
-+ list_del(&desc->desc_node);
-+ /* free link descriptor */
-+ dma_pool_free(atdma->dma_desc_pool, desc, desc->txd.phys);
-+ }
-+ list_splice_init(&atchan->free_list, &list);
-+ atchan->descs_allocated = 0;
-+
-+ dev_vdbg(chan2dev(chan), "free_chan_resources: done\n");
-+}
-+
-+
-+/*-- Module Management -----------------------------------------------*/
-+
-+/**
-+ * at_dma_off - disable DMA controller
-+ * @atdma: the Atmel HDAMC device
-+ */
-+static void at_dma_off(struct at_dma *atdma)
-+{
-+ dma_writel(atdma, EN, 0);
-+
-+ /* disable all interrupts */
-+ dma_writel(atdma, EBCIDR, -1L);
-+
-+ /* confirm that all channels are disabled */
-+ while (dma_readl(atdma, CHSR) & atdma->all_chan_mask)
-+ cpu_relax();
-+}
-+
-+static int __init at_dma_probe(struct platform_device *pdev)
-+{
-+ struct at_dma_platform_data *pdata;
-+ struct resource *io;
-+ struct at_dma *atdma;
-+ size_t size;
-+ int irq;
-+ int err;
-+ int i;
-+
-+ /* get DMA Controller parameters from platform */
-+ pdata = pdev->dev.platform_data;
-+ if (!pdata || pdata->nr_channels > AT_DMA_MAX_NR_CHANNELS)
-+ return -EINVAL;
-+
-+ io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!io)
-+ return -EINVAL;
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq < 0)
-+ return irq;
-+
-+ size = sizeof(struct at_dma);
-+ size += pdata->nr_channels * sizeof(struct at_dma_chan);
-+ atdma = kzalloc(size, GFP_KERNEL);
-+ if (!atdma)
-+ return -ENOMEM;
-+
-+ /* discover transaction capabilites from the platform data */
-+ atdma->dma_common.cap_mask = pdata->cap_mask;
-+ atdma->all_chan_mask = (1 << pdata->nr_channels) - 1;
-+
-+ size = io->end - io->start + 1;
-+ if (!request_mem_region(io->start, size, pdev->dev.driver->name)) {
-+ err = -EBUSY;
-+ goto err_kfree;
-+ }
-+
-+ atdma->regs = ioremap(io->start, size);
-+ if (!atdma->regs) {
-+ err = -ENOMEM;
-+ goto err_release_r;
-+ }
-+
-+ atdma->clk = clk_get(&pdev->dev, "dma_clk");
-+ if (IS_ERR(atdma->clk)) {
-+ err = PTR_ERR(atdma->clk);
-+ goto err_clk;
-+ }
-+ clk_enable(atdma->clk);
-+
-+ /* force dma off, just in case */
-+ at_dma_off(atdma);
-+
-+ err = request_irq(irq, at_dma_interrupt, 0, "at_hdmac", atdma);
-+ if (err)
-+ goto err_irq;
-+
-+ platform_set_drvdata(pdev, atdma);
-+
-+ /* create a pool of consistent memory blocks for hardware descriptors */
-+ atdma->dma_desc_pool = dma_pool_create("at_hdmac_desc_pool",
-+ &pdev->dev, sizeof(struct at_desc),
-+ 4 /* word alignment */, 0);
-+ if (!atdma->dma_desc_pool) {
-+ dev_err(&pdev->dev, "No memory for descriptors dma pool\n");
-+ err = -ENOMEM;
-+ goto err_pool_create;
-+ }
-+
-+ /* clear any pending interrupt */
-+ while (dma_readl(atdma, EBCISR))
-+ cpu_relax();
-+
-+ /* initialize channels related values */
-+ INIT_LIST_HEAD(&atdma->dma_common.channels);
-+ for (i = 0; i < pdata->nr_channels; i++, atdma->dma_common.chancnt++) {
-+ struct at_dma_chan *atchan = &atdma->chan[i];
-+
-+ atchan->chan_common.device = &atdma->dma_common;
-+ atchan->chan_common.cookie = atchan->completed_cookie = 1;
-+ atchan->chan_common.chan_id = i;
-+ list_add_tail(&atchan->chan_common.device_node,
-+ &atdma->dma_common.channels);
-+
-+ atchan->ch_regs = atdma->regs + ch_regs(i);
-+ spin_lock_init(&atchan->lock);
-+ atchan->mask = 1 << i;
-+
-+ INIT_LIST_HEAD(&atchan->active_list);
-+ INIT_LIST_HEAD(&atchan->queue);
-+ INIT_LIST_HEAD(&atchan->free_list);
-+
-+ tasklet_init(&atchan->tasklet, atc_tasklet,
-+ (unsigned long)atchan);
-+ atc_enable_irq(atchan);
-+ }
-+
-+ /* set base routines */
-+ atdma->dma_common.device_alloc_chan_resources = atc_alloc_chan_resources;
-+ atdma->dma_common.device_free_chan_resources = atc_free_chan_resources;
-+ atdma->dma_common.device_is_tx_complete = atc_is_tx_complete;
-+ atdma->dma_common.device_issue_pending = atc_issue_pending;
-+ atdma->dma_common.dev = &pdev->dev;
-+
-+ /* set prep routines based on capability */
-+ if (dma_has_cap(DMA_MEMCPY, atdma->dma_common.cap_mask))
-+ atdma->dma_common.device_prep_dma_memcpy = atc_prep_dma_memcpy;
-+
-+ if (dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask)) {
-+ atdma->dma_common.device_prep_slave_sg = atc_prep_slave_sg;
-+ atdma->dma_common.device_terminate_all = atc_terminate_all;
-+ }
-+
-+ dma_writel(atdma, EN, AT_DMA_ENABLE);
-+
-+ dev_info(&pdev->dev, "Atmel AHB DMA Controller ( %s%s), %d channels\n",
-+ dma_has_cap(DMA_MEMCPY, atdma->dma_common.cap_mask) ? "cpy " : "",
-+ dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "",
-+ atdma->dma_common.chancnt);
-+
-+ dma_async_device_register(&atdma->dma_common);
-+
-+ return 0;
-+
-+err_pool_create:
-+ platform_set_drvdata(pdev, NULL);
-+ free_irq(platform_get_irq(pdev, 0), atdma);
-+err_irq:
-+ clk_disable(atdma->clk);
-+ clk_put(atdma->clk);
-+err_clk:
-+ iounmap(atdma->regs);
-+ atdma->regs = NULL;
-+err_release_r:
-+ release_mem_region(io->start, size);
-+err_kfree:
-+ kfree(atdma);
-+ return err;
-+}
-+
-+static int __exit at_dma_remove(struct platform_device *pdev)
-+{
-+ struct at_dma *atdma = platform_get_drvdata(pdev);
-+ struct dma_chan *chan, *_chan;
-+ struct resource *io;
-+
-+ at_dma_off(atdma);
-+ dma_async_device_unregister(&atdma->dma_common);
-+
-+ dma_pool_destroy(atdma->dma_desc_pool);
-+ platform_set_drvdata(pdev, NULL);
-+ free_irq(platform_get_irq(pdev, 0), atdma);
-+
-+ list_for_each_entry_safe(chan, _chan, &atdma->dma_common.channels,
-+ device_node) {
-+ struct at_dma_chan *atchan = to_at_dma_chan(chan);
-+
-+ /* Disable interrupts */
-+ atc_disable_irq(atchan);
-+ tasklet_disable(&atchan->tasklet);
-+
-+ tasklet_kill(&atchan->tasklet);
-+ list_del(&chan->device_node);
-+ }
-+
-+ clk_disable(atdma->clk);
-+ clk_put(atdma->clk);
-+
-+ iounmap(atdma->regs);
-+ atdma->regs = NULL;
-+
-+ io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ release_mem_region(io->start, io->end - io->start + 1);
-+
-+ kfree(atdma);
-+
-+ return 0;
-+}
-+
-+static void at_dma_shutdown(struct platform_device *pdev)
-+{
-+ struct at_dma *atdma = platform_get_drvdata(pdev);
-+
-+ at_dma_off(platform_get_drvdata(pdev));
-+ clk_disable(atdma->clk);
-+}
-+
-+static int at_dma_suspend_late(struct platform_device *pdev, pm_message_t mesg)
-+{
-+ struct at_dma *atdma = platform_get_drvdata(pdev);
-+
-+ at_dma_off(platform_get_drvdata(pdev));
-+ clk_disable(atdma->clk);
-+ return 0;
-+}
-+
-+static int at_dma_resume_early(struct platform_device *pdev)
-+{
-+ struct at_dma *atdma = platform_get_drvdata(pdev);
-+
-+ clk_enable(atdma->clk);
-+ dma_writel(atdma, EN, AT_DMA_ENABLE);
-+ return 0;
-+
-+}
-+
-+static struct platform_driver at_dma_driver = {
-+ .remove = __exit_p(at_dma_remove),
-+ .shutdown = at_dma_shutdown,
-+ .suspend_late = at_dma_suspend_late,
-+ .resume_early = at_dma_resume_early,
-+ .driver = {
-+ .name = "at_hdmac",
-+ },
-+};
-+
-+static int __init at_dma_init(void)
-+{
-+ return platform_driver_probe(&at_dma_driver, at_dma_probe);
-+}
-+module_init(at_dma_init);
-+
-+static void __exit at_dma_exit(void)
-+{
-+ platform_driver_unregister(&at_dma_driver);
-+}
-+module_exit(at_dma_exit);
-+
-+MODULE_DESCRIPTION("Atmel AHB DMA Controller driver");
-+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre at atmel.com>");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:at_hdmac");
-Index: linux-2.6.30/drivers/dma/at_hdmac_regs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/drivers/dma/at_hdmac_regs.h 2011-02-01 16:40:30.152108635 +0100
-@@ -0,0 +1,353 @@
-+/*
-+ * Header file for the Atmel AHB DMA Controller driver
-+ *
-+ * Copyright (C) 2008 Atmel Corporation
-+ *
-+ * 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.
-+ */
-+#ifndef AT_HDMAC_REGS_H
-+#define AT_HDMAC_REGS_H
-+
-+#include <mach/at_hdmac.h>
-+
-+#define AT_DMA_MAX_NR_CHANNELS 8
-+
-+
-+#define AT_DMA_GCFG 0x00 /* Global Configuration Register */
-+#define AT_DMA_IF_BIGEND(i) (0x1 << (i)) /* AHB-Lite Interface i in Big-endian mode */
-+#define AT_DMA_ARB_CFG (0x1 << 4) /* Arbiter mode. */
-+#define AT_DMA_ARB_CFG_FIXED (0x0 << 4)
-+#define AT_DMA_ARB_CFG_ROUND_ROBIN (0x1 << 4)
-+
-+#define AT_DMA_EN 0x04 /* Controller Enable Register */
-+#define AT_DMA_ENABLE (0x1 << 0)
-+
-+#define AT_DMA_SREQ 0x08 /* Software Single Request Register */
-+#define AT_DMA_SSREQ(x) (0x1 << ((x) << 1)) /* Request a source single transfer on channel x */
-+#define AT_DMA_DSREQ(x) (0x1 << (1 + ((x) << 1))) /* Request a destination single transfer on channel x */
-+
-+#define AT_DMA_CREQ 0x0C /* Software Chunk Transfer Request Register */
-+#define AT_DMA_SCREQ(x) (0x1 << ((x) << 1)) /* Request a source chunk transfer on channel x */
-+#define AT_DMA_DCREQ(x) (0x1 << (1 + ((x) << 1))) /* Request a destination chunk transfer on channel x */
-+
-+#define AT_DMA_LAST 0x10 /* Software Last Transfer Flag Register */
-+#define AT_DMA_SLAST(x) (0x1 << ((x) << 1)) /* This src rq is last tx of buffer on channel x */
-+#define AT_DMA_DLAST(x) (0x1 << (1 + ((x) << 1))) /* This dst rq is last tx of buffer on channel x */
-+
-+#define AT_DMA_SYNC 0x14 /* Request Synchronization Register */
-+#define AT_DMA_SYR(h) (0x1 << (h)) /* Synchronize handshake line h */
-+
-+/* Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt registers */
-+#define AT_DMA_EBCIER 0x18 /* Enable register */
-+#define AT_DMA_EBCIDR 0x1C /* Disable register */
-+#define AT_DMA_EBCIMR 0x20 /* Mask Register */
-+#define AT_DMA_EBCISR 0x24 /* Status Register */
-+#define AT_DMA_CBTC_OFFSET 8
-+#define AT_DMA_ERR_OFFSET 16
-+#define AT_DMA_BTC(x) (0x1 << (x))
-+#define AT_DMA_CBTC(x) (0x1 << (AT_DMA_CBTC_OFFSET + (x)))
-+#define AT_DMA_ERR(x) (0x1 << (AT_DMA_ERR_OFFSET + (x)))
-+
-+#define AT_DMA_CHER 0x28 /* Channel Handler Enable Register */
-+#define AT_DMA_ENA(x) (0x1 << (x))
-+#define AT_DMA_SUSP(x) (0x1 << ( 8 + (x)))
-+#define AT_DMA_KEEP(x) (0x1 << (24 + (x)))
-+
-+#define AT_DMA_CHDR 0x2C /* Channel Handler Disable Register */
-+#define AT_DMA_DIS(x) (0x1 << (x))
-+#define AT_DMA_RES(x) (0x1 << ( 8 + (x)))
-+
-+#define AT_DMA_CHSR 0x30 /* Channel Handler Status Register */
-+#define AT_DMA_EMPT(x) (0x1 << (16 + (x)))
-+#define AT_DMA_STAL(x) (0x1 << (24 + (x)))
-+
-+
-+#define AT_DMA_CH_REGS_BASE 0x3C /* Channel registers base address */
-+#define ch_regs(x) (AT_DMA_CH_REGS_BASE + (x) * 0x28) /* Channel x base addr */
-+
-+/* Hardware register offset for each channel */
-+#define ATC_SADDR_OFFSET 0x00 /* Source Address Register */
-+#define ATC_DADDR_OFFSET 0x04 /* Destination Address Register */
-+#define ATC_DSCR_OFFSET 0x08 /* Descriptor Address Register */
-+#define ATC_CTRLA_OFFSET 0x0C /* Control A Register */
-+#define ATC_CTRLB_OFFSET 0x10 /* Control B Register */
-+#define ATC_CFG_OFFSET 0x14 /* Configuration Register */
-+#define ATC_SPIP_OFFSET 0x18 /* Src PIP Configuration Register */
-+#define ATC_DPIP_OFFSET 0x1C /* Dst PIP Configuration Register */
-+
-+
-+/* Bitfield definitions */
-+
-+/* Bitfields in DSCR */
-+#define ATC_DSCR_IF(i) (0x3 & (i)) /* Dsc feched via AHB-Lite Interface i */
-+
-+/* Bitfields in CTRLA */
-+#define ATC_BTSIZE_MAX 0xFFFFUL /* Maximum Buffer Transfer Size */
-+#define ATC_BTSIZE(x) (ATC_BTSIZE_MAX & (x)) /* Buffer Transfer Size */
-+/* Chunck Tranfer size definitions are in at_hdmac.h */
-+#define ATC_SRC_WIDTH_MASK (0x3 << 24) /* Source Single Transfer Size */
-+#define ATC_SRC_WIDTH(x) ((x) << 24)
-+#define ATC_SRC_WIDTH_BYTE (0x0 << 24)
-+#define ATC_SRC_WIDTH_HALFWORD (0x1 << 24)
-+#define ATC_SRC_WIDTH_WORD (0x2 << 24)
-+#define ATC_DST_WIDTH_MASK (0x3 << 28) /* Destination Single Transfer Size */
-+#define ATC_DST_WIDTH(x) ((x) << 28)
-+#define ATC_DST_WIDTH_BYTE (0x0 << 28)
-+#define ATC_DST_WIDTH_HALFWORD (0x1 << 28)
-+#define ATC_DST_WIDTH_WORD (0x2 << 28)
-+#define ATC_DONE (0x1 << 31) /* Tx Done (only written back in descriptor) */
-+
-+/* Bitfields in CTRLB */
-+#define ATC_SIF(i) (0x3 & (i)) /* Src tx done via AHB-Lite Interface i */
-+#define ATC_DIF(i) ((0x3 & (i)) << 4) /* Dst tx done via AHB-Lite Interface i */
-+#define ATC_SRC_PIP (0x1 << 8) /* Source Picture-in-Picture enabled */
-+#define ATC_DST_PIP (0x1 << 12) /* Destination Picture-in-Picture enabled */
-+#define ATC_SRC_DSCR_DIS (0x1 << 16) /* Src Descriptor fetch disable */
-+#define ATC_DST_DSCR_DIS (0x1 << 20) /* Dst Descriptor fetch disable */
-+#define ATC_FC_MASK (0x7 << 21) /* Choose Flow Controller */
-+#define ATC_FC_MEM2MEM (0x0 << 21) /* Mem-to-Mem (DMA) */
-+#define ATC_FC_MEM2PER (0x1 << 21) /* Mem-to-Periph (DMA) */
-+#define ATC_FC_PER2MEM (0x2 << 21) /* Periph-to-Mem (DMA) */
-+#define ATC_FC_PER2PER (0x3 << 21) /* Periph-to-Periph (DMA) */
-+#define ATC_FC_PER2MEM_PER (0x4 << 21) /* Periph-to-Mem (Peripheral) */
-+#define ATC_FC_MEM2PER_PER (0x5 << 21) /* Mem-to-Periph (Peripheral) */
-+#define ATC_FC_PER2PER_SRCPER (0x6 << 21) /* Periph-to-Periph (Src Peripheral) */
-+#define ATC_FC_PER2PER_DSTPER (0x7 << 21) /* Periph-to-Periph (Dst Peripheral) */
-+#define ATC_SRC_ADDR_MODE_MASK (0x3 << 24)
-+#define ATC_SRC_ADDR_MODE_INCR (0x0 << 24) /* Incrementing Mode */
-+#define ATC_SRC_ADDR_MODE_DECR (0x1 << 24) /* Decrementing Mode */
-+#define ATC_SRC_ADDR_MODE_FIXED (0x2 << 24) /* Fixed Mode */
-+#define ATC_DST_ADDR_MODE_MASK (0x3 << 28)
-+#define ATC_DST_ADDR_MODE_INCR (0x0 << 28) /* Incrementing Mode */
-+#define ATC_DST_ADDR_MODE_DECR (0x1 << 28) /* Decrementing Mode */
-+#define ATC_DST_ADDR_MODE_FIXED (0x2 << 28) /* Fixed Mode */
-+#define ATC_IEN (0x1 << 30) /* BTC interrupt enable (active low) */
-+#define ATC_AUTO (0x1 << 31) /* Auto multiple buffer tx enable */
-+
-+/* Bitfields in CFG */
-+/* are in at_hdmac.h */
-+
-+/* Bitfields in SPIP */
-+#define ATC_SPIP_HOLE(x) (0xFFFFU & (x))
-+#define ATC_SPIP_BOUNDARY(x) ((0x3FF & (x)) << 16)
-+
-+/* Bitfields in DPIP */
-+#define ATC_DPIP_HOLE(x) (0xFFFFU & (x))
-+#define ATC_DPIP_BOUNDARY(x) ((0x3FF & (x)) << 16)
-+
-+
-+/*-- descriptors -----------------------------------------------------*/
-+
-+/* LLI == Linked List Item; aka DMA buffer descriptor */
-+struct at_lli {
-+ /* values that are not changed by hardware */
-+ dma_addr_t saddr;
-+ dma_addr_t daddr;
-+ /* value that may get written back: */
-+ u32 ctrla;
-+ /* more values that are not changed by hardware */
-+ u32 ctrlb;
-+ dma_addr_t dscr; /* chain to next lli */
-+};
-+
-+/**
-+ * struct at_desc - software descriptor
-+ * @at_lli: hardware lli structure
-+ * @txd: support for the async_tx api
-+ * @desc_node: node on the channed descriptors list
-+ * @len: total transaction bytecount
-+ */
-+struct at_desc {
-+ /* FIRST values the hardware uses */
-+ struct at_lli lli;
-+
-+ /* THEN values for driver housekeeping */
-+ struct dma_async_tx_descriptor txd;
-+ struct list_head desc_node;
-+ size_t len;
-+};
-+
-+static inline struct at_desc *
-+txd_to_at_desc(struct dma_async_tx_descriptor *txd)
-+{
-+ return container_of(txd, struct at_desc, txd);
-+}
-+
-+
-+/*-- Channels --------------------------------------------------------*/
-+
-+/**
-+ * struct at_dma_chan - internal representation of an Atmel HDMAC channel
-+ * @chan_common: common dmaengine channel object members
-+ * @device: parent device
-+ * @ch_regs: memory mapped register base
-+ * @mask: channel index in a mask
-+ * @error_status: transmit error status information from irq handler
-+ * to tasklet (use atomic operations)
-+ * @tasklet: bottom half to finish transaction work
-+ * @lock: serializes enqueue/dequeue operations to descriptors lists
-+ * @completed_cookie: identifier for the most recently completed operation
-+ * @active_list: list of descriptors dmaengine is being running on
-+ * @queue: list of descriptors ready to be submitted to engine
-+ * @free_list: list of descriptors usable by the channel
-+ * @descs_allocated: records the actual size of the descriptor pool
-+ */
-+struct at_dma_chan {
-+ struct dma_chan chan_common;
-+ struct at_dma *device;
-+ void __iomem *ch_regs;
-+ u8 mask;
-+ unsigned long error_status;
-+ struct tasklet_struct tasklet;
-+
-+ spinlock_t lock;
-+
-+ /* these other elements are all protected by lock */
-+ dma_cookie_t completed_cookie;
-+ struct list_head active_list;
-+ struct list_head queue;
-+ struct list_head free_list;
-+ unsigned int descs_allocated;
-+};
-+
-+#define channel_readl(atchan, name) \
-+ __raw_readl((atchan)->ch_regs + ATC_##name##_OFFSET)
-+
-+#define channel_writel(atchan, name, val) \
-+ __raw_writel((val), (atchan)->ch_regs + ATC_##name##_OFFSET)
-+
-+static inline struct at_dma_chan *to_at_dma_chan(struct dma_chan *dchan)
-+{
-+ return container_of(dchan, struct at_dma_chan, chan_common);
-+}
-+
-+
-+/*-- Controller ------------------------------------------------------*/
-+
-+/**
-+ * struct at_dma - internal representation of an Atmel HDMA Controller
-+ * @chan_common: common dmaengine dma_device object members
-+ * @ch_regs: memory mapped register base
-+ * @clk: dma controller clock
-+ * @all_chan_mask: all channels availlable in a mask
-+ * @dma_desc_pool: base of DMA descriptor region (DMA address)
-+ * @chan: channels table to store at_dma_chan structures
-+ */
-+struct at_dma {
-+ struct dma_device dma_common;
-+ void __iomem *regs;
-+ struct clk *clk;
-+
-+ u8 all_chan_mask;
-+
-+ struct dma_pool *dma_desc_pool;
-+ /* AT THE END channels table */
-+ struct at_dma_chan chan[0];
-+};
-+
-+#define dma_readl(atdma, name) \
-+ __raw_readl((atdma)->regs + AT_DMA_##name)
-+#define dma_writel(atdma, name, val) \
-+ __raw_writel((val), (atdma)->regs + AT_DMA_##name)
-+
-+static inline struct at_dma *to_at_dma(struct dma_device *ddev)
-+{
-+ return container_of(ddev, struct at_dma, dma_common);
-+}
-+
-+
-+/*-- Helper functions ------------------------------------------------*/
-+
-+static struct device *chan2dev(struct dma_chan *chan)
-+{
-+ return &chan->dev->device;
-+}
-+static struct device *chan2parent(struct dma_chan *chan)
-+{
-+ return chan->dev->device.parent;
-+}
-+
-+#if defined(VERBOSE_DEBUG)
-+static void vdbg_dump_regs(struct at_dma_chan *atchan)
-+{
-+ struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
-+
-+ dev_err(chan2dev(&atchan->chan_common),
-+ " channel %d : imr = 0x%x, chsr = 0x%x\n",
-+ atchan->chan_common.chan_id,
-+ dma_readl(atdma, EBCIMR),
-+ dma_readl(atdma, CHSR));
-+
-+ dev_err(chan2dev(&atchan->chan_common),
-+ " channel: s0x%x d0x%x ctrl0x%x:0x%x cfg0x%x l0x%x\n",
-+ channel_readl(atchan, SADDR),
-+ channel_readl(atchan, DADDR),
-+ channel_readl(atchan, CTRLA),
-+ channel_readl(atchan, CTRLB),
-+ channel_readl(atchan, CFG),
-+ channel_readl(atchan, DSCR));
-+}
-+#else
-+static void vdbg_dump_regs(struct at_dma_chan *atchan) {}
-+#endif
-+
-+static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli)
-+{
-+ dev_printk(KERN_CRIT, chan2dev(&atchan->chan_common),
-+ " desc: s0x%x d0x%x ctrl0x%x:0x%x l0x%x\n",
-+ lli->saddr, lli->daddr,
-+ lli->ctrla, lli->ctrlb, lli->dscr);
-+}
-+
-+
-+static void atc_setup_irq(struct at_dma_chan *atchan, int on)
-+{
-+ struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
-+ u32 ebci;
-+
-+ /* enable interrupts on buffer chain completion & error */
-+ ebci = AT_DMA_CBTC(atchan->chan_common.chan_id)
-+ | AT_DMA_ERR(atchan->chan_common.chan_id);
-+ if (on)
-+ dma_writel(atdma, EBCIER, ebci);
-+ else
-+ dma_writel(atdma, EBCIDR, ebci);
-+}
-+
-+static inline void atc_enable_irq(struct at_dma_chan *atchan)
-+{
-+ atc_setup_irq(atchan, 1);
-+}
-+
-+static inline void atc_disable_irq(struct at_dma_chan *atchan)
-+{
-+ atc_setup_irq(atchan, 0);
-+}
-+
-+
-+/**
-+ * atc_chan_is_enabled - test if given channel is enabled
-+ * @atchan: channel we want to test status
-+ */
-+static inline int atc_chan_is_enabled(struct at_dma_chan *atchan)
-+{
-+ struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
-+
-+ return !!(dma_readl(atdma, CHSR) & atchan->mask);
-+}
-+
-+
-+/**
-+ * set_desc_eol - set end-of-link to descriptor so it will end transfer
-+ * @desc: descriptor, signle or at the end of a chain, to end chain on
-+ */
-+static void set_desc_eol(struct at_desc *desc)
-+{
-+ desc->lli.ctrlb |= ATC_SRC_DSCR_DIS | ATC_DST_DSCR_DIS;
-+ desc->lli.dscr = 0;
-+}
-+
-+#endif /* AT_HDMAC_REGS_H */
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9rl_devices.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/at91sam9rl_devices.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9rl_devices.c 2011-02-01 16:40:30.165043750 +0100
-@@ -21,11 +21,57 @@
- #include <mach/at91sam9rl.h>
- #include <mach/at91sam9rl_matrix.h>
- #include <mach/at91sam9_smc.h>
-+#include <mach/at_hdmac.h>
-
- #include "generic.h"
-
-
- /* --------------------------------------------------------------------
-+ * HDMAC - AHB DMA Controller
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE)
-+static u64 hdmac_dmamask = DMA_BIT_MASK(32);
-+
-+static struct at_dma_platform_data atdma_pdata = {
-+ .nr_channels = 2,
-+};
-+
-+static struct resource hdmac_resources[] = {
-+ [0] = {
-+ .start = AT91_BASE_SYS + AT91_DMA,
-+ .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = AT91SAM9RL_ID_DMA,
-+ .end = AT91SAM9RL_ID_DMA,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at_hdmac_device = {
-+ .name = "at_hdmac",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &hdmac_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &atdma_pdata,
-+ },
-+ .resource = hdmac_resources,
-+ .num_resources = ARRAY_SIZE(hdmac_resources),
-+};
-+
-+void __init at91_add_device_hdmac(void)
-+{
-+ dma_cap_set(DMA_MEMCPY, atdma_pdata.cap_mask);
-+ platform_device_register(&at_hdmac_device);
-+}
-+#else
-+void __init at91_add_device_hdmac(void) {}
-+#endif
-+
-+/* --------------------------------------------------------------------
- * USB HS Device (Gadget)
- * -------------------------------------------------------------------- */
-
-@@ -398,6 +444,61 @@
-
-
- /* --------------------------------------------------------------------
-+ * AC97
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_SND_ATMEL_AC97C) || defined(CONFIG_SND_ATMEL_AC97C_MODULE)
-+static u64 ac97_dmamask = DMA_BIT_MASK(32);
-+static struct ac97c_platform_data ac97_data;
-+
-+static struct resource ac97_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9RL_BASE_AC97C,
-+ .end = AT91SAM9RL_BASE_AC97C + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9RL_ID_AC97C,
-+ .end = AT91SAM9RL_ID_AC97C,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9rl_ac97_device = {
-+ .name = "atmel_ac97c",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &ac97_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &ac97_data,
-+ },
-+ .resource = ac97_resources,
-+ .num_resources = ARRAY_SIZE(ac97_resources),
-+};
-+
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data)
-+{
-+ if (!data)
-+ return;
-+
-+ at91_set_A_periph(AT91_PIN_PD1, 0); /* AC97FS */
-+ at91_set_A_periph(AT91_PIN_PD2, 0); /* AC97CK */
-+ at91_set_A_periph(AT91_PIN_PD3, 0); /* AC97TX */
-+ at91_set_A_periph(AT91_PIN_PD4, 0); /* AC97RX */
-+
-+ /* reset */
-+ if (data->reset_pin)
-+ at91_set_gpio_output(data->reset_pin, 0);
-+
-+ ac97_data = *data;
-+ platform_device_register(&at91sam9rl_ac97_device);
-+}
-+#else
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data) {}
-+#endif
-+
-+
-+/* --------------------------------------------------------------------
- * LCD Controller
- * -------------------------------------------------------------------- */
-
-@@ -521,6 +622,7 @@
-
- #if defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) || defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC_MODULE)
- static u64 tsadcc_dmamask = DMA_BIT_MASK(32);
-+static struct at91_tsadcc_data tsadcc_data;
-
- static struct resource tsadcc_resources[] = {
- [0] = {
-@@ -541,22 +643,27 @@
- .dev = {
- .dma_mask = &tsadcc_dmamask,
- .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &tsadcc_data,
- },
- .resource = tsadcc_resources,
- .num_resources = ARRAY_SIZE(tsadcc_resources),
- };
-
--void __init at91_add_device_tsadcc(void)
-+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data)
- {
-+ if (!data)
-+ return;
-+
- at91_set_A_periph(AT91_PIN_PA17, 0); /* AD0_XR */
- at91_set_A_periph(AT91_PIN_PA18, 0); /* AD1_XL */
- at91_set_A_periph(AT91_PIN_PA19, 0); /* AD2_YT */
- at91_set_A_periph(AT91_PIN_PA20, 0); /* AD3_TB */
-
-+ tsadcc_data = *data;
- platform_device_register(&at91sam9rl_tsadcc_device);
- }
- #else
--void __init at91_add_device_tsadcc(void) {}
-+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {}
- #endif
-
-
-@@ -1103,6 +1210,7 @@
- */
- static int __init at91_add_standard_devices(void)
- {
-+ at91_add_device_hdmac();
- at91_add_device_rtc();
- at91_add_device_rtt();
- at91_add_device_watchdog();
-Index: linux-2.6.30/drivers/mmc/host/atmel-mci-regs.h
-===================================================================
---- linux-2.6.30.orig/drivers/mmc/host/atmel-mci-regs.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/mmc/host/atmel-mci-regs.h 2011-02-01 16:40:30.152108635 +0100
-@@ -7,6 +7,12 @@
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-+
-+/*
-+ * Superset of MCI IP registers integrated in Atmel AVR32 and AT91 Processors
-+ * Registers and bitfields marked with [2] are only available in MCI2
-+ */
-+
- #ifndef __DRIVERS_MMC_ATMEL_MCI_H__
- #define __DRIVERS_MMC_ATMEL_MCI_H__
-
-@@ -14,11 +20,17 @@
- #define MCI_CR 0x0000 /* Control */
- # define MCI_CR_MCIEN ( 1 << 0) /* MCI Enable */
- # define MCI_CR_MCIDIS ( 1 << 1) /* MCI Disable */
-+# define MCI_CR_PWSEN ( 1 << 2) /* Power Save Enable */
-+# define MCI_CR_PWSDIS ( 1 << 3) /* Power Save Disable */
- # define MCI_CR_SWRST ( 1 << 7) /* Software Reset */
- #define MCI_MR 0x0004 /* Mode */
- # define MCI_MR_CLKDIV(x) ((x) << 0) /* Clock Divider */
-+# define MCI_MR_PWSDIV(x) ((x) << 8) /* Power Saving Divider */
- # define MCI_MR_RDPROOF ( 1 << 11) /* Read Proof */
- # define MCI_MR_WRPROOF ( 1 << 12) /* Write Proof */
-+# define MCI_MR_PDCFBYTE ( 1 << 13) /* Force Byte Transfer */
-+# define MCI_MR_PDCPADV ( 1 << 14) /* Padding Value */
-+# define MCI_MR_PDCMODE ( 1 << 15) /* PDC-oriented Mode */
- #define MCI_DTOR 0x0008 /* Data Timeout */
- # define MCI_DTOCYC(x) ((x) << 0) /* Data Timeout Cycles */
- # define MCI_DTOMUL(x) ((x) << 4) /* Data Timeout Multiplier */
-@@ -28,6 +40,7 @@
- # define MCI_SDCSEL_MASK ( 3 << 0)
- # define MCI_SDCBUS_1BIT ( 0 << 6) /* 1-bit data bus */
- # define MCI_SDCBUS_4BIT ( 2 << 6) /* 4-bit data bus */
-+# define MCI_SDCBUS_8BIT ( 3 << 6) /* 8-bit data bus[2] */
- # define MCI_SDCBUS_MASK ( 3 << 6)
- #define MCI_ARGR 0x0010 /* Command Argument */
- #define MCI_CMDR 0x0014 /* Command */
-@@ -56,6 +69,9 @@
- #define MCI_BLKR 0x0018 /* Block */
- # define MCI_BCNT(x) ((x) << 0) /* Data Block Count */
- # define MCI_BLKLEN(x) ((x) << 16) /* Data Block Length */
-+#define MCI_CSTOR 0x001c /* Completion Signal Timeout[2] */
-+# define MCI_CSTOCYC(x) ((x) << 0) /* CST cycles */
-+# define MCI_CSTOMUL(x) ((x) << 4) /* CST multiplier */
- #define MCI_RSPR 0x0020 /* Response 0 */
- #define MCI_RSPR1 0x0024 /* Response 1 */
- #define MCI_RSPR2 0x0028 /* Response 2 */
-@@ -83,7 +99,24 @@
- # define MCI_DTOE ( 1 << 22) /* Data Time-Out Error */
- # define MCI_OVRE ( 1 << 30) /* RX Overrun Error */
- # define MCI_UNRE ( 1 << 31) /* TX Underrun Error */
-+#define MCI_DMA 0x0050 /* DMA Configuration[2] */
-+# define MCI_DMA_OFFSET(x) ((x) << 0) /* DMA Write Buffer Offset */
-+# define MCI_DMA_CHKSIZE(x) ((x) << 4) /* DMA Channel Read and Write Chunk Size */
-+# define MCI_DMAEN ( 1 << 8) /* DMA Hardware Handshaking Enable */
-+#define MCI_CFG 0x0054 /* Configuration[2] */
-+# define MCI_CFG_FIFOMODE_1DATA ( 1 << 0) /* MCI Internal FIFO control mode */
-+# define MCI_CFG_FERRCTRL_COR ( 1 << 4) /* Flow Error flag reset control mode */
-+# define MCI_CFG_HSMODE ( 1 << 8) /* High Speed Mode */
-+# define MCI_CFG_LSYNC ( 1 << 12) /* Synchronize on the last block */
-+#define MCI_WPMR 0x00e4 /* Write Protection Mode[2] */
-+# define MCI_WP_EN ( 1 << 0) /* WP Enable */
-+# define MCI_WP_KEY (0x4d4349 << 8) /* WP Key */
-+#define MCI_WPSR 0x00e8 /* Write Protection Status[2] */
-+# define MCI_GET_WP_VS(x) ((x) & 0x0f)
-+# define MCI_GET_WP_VSRC(x) (((x) >> 8) & 0xffff)
-+#define MCI_FIFO_APERTURE 0x0200 /* FIFO Aperture[2] */
-
-+/* This is not including the FIFO Aperture on MCI2 */
- #define MCI_REGS_SIZE 0x100
-
- /* Register access macros */
-Index: linux-2.6.30/drivers/mmc/host/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/mmc/host/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/mmc/host/Kconfig 2011-02-01 16:40:30.157049210 +0100
-@@ -124,6 +124,12 @@
-
- If unsure, say N.
-
-+choice
-+ prompt "Atmel SD/MMC Driver"
-+ default MMC_ATMELMCI if AVR32
-+ help
-+ Choose which driver to use for the Atmel MCI Silicon
-+
- config MMC_AT91
- tristate "AT91 SD/MMC Card Interface support"
- depends on ARCH_AT91
-@@ -134,17 +140,19 @@
-
- config MMC_ATMELMCI
- tristate "Atmel Multimedia Card Interface support"
-- depends on AVR32
-+ depends on AVR32 || ARCH_AT91
- help
- This selects the Atmel Multimedia Card Interface driver. If
-- you have an AT32 (AVR32) platform with a Multimedia Card
-- slot, say Y or M here.
-+ you have an AT32 (AVR32) or AT91 platform with a Multimedia
-+ Card slot, say Y or M here.
-
- If unsure, say N.
-
-+endchoice
-+
- config MMC_ATMELMCI_DMA
- bool "Atmel MCI DMA support (EXPERIMENTAL)"
-- depends on MMC_ATMELMCI && DMA_ENGINE && EXPERIMENTAL
-+ depends on MMC_ATMELMCI && (AVR32 || ARCH_AT91SAM9G45) && DMA_ENGINE && EXPERIMENTAL
- help
- Say Y here to have the Atmel MCI driver use a DMA engine to
- do data transfers and thus increase the throughput and
-Index: linux-2.6.30/drivers/mmc/host/atmel-mci.c
-===================================================================
---- linux-2.6.30.orig/drivers/mmc/host/atmel-mci.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/mmc/host/atmel-mci.c 2011-02-01 16:40:30.161007816 +0100
-@@ -7,6 +7,10 @@
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-+
-+/* High speed mode setting on host & SD card */
-+/*#define AT91_HSMODE 1*/
-+
- #include <linux/blkdev.h>
- #include <linux/clk.h>
- #include <linux/debugfs.h>
-@@ -30,6 +34,7 @@
- #include <asm/io.h>
- #include <asm/unaligned.h>
-
-+#include <mach/cpu.h>
- #include <mach/board.h>
-
- #include "atmel-mci-regs.h"
-@@ -91,6 +96,7 @@
- * @need_clock_update: Update the clock rate before the next request.
- * @need_reset: Reset controller before next request.
- * @mode_reg: Value of the MR register.
-+ * @cfg_reg: Value of the CFG register.
- * @bus_hz: The rate of @mck in Hz. This forms the basis for MMC bus
- * rate and timeout calculations.
- * @mapbase: Physical address of the MMIO registers.
-@@ -154,6 +160,7 @@
- bool need_clock_update;
- bool need_reset;
- u32 mode_reg;
-+ u32 cfg_reg;
- unsigned long bus_hz;
- unsigned long mapbase;
- struct clk *mck;
-@@ -208,6 +215,31 @@
- set_bit(event, &host->pending_events)
-
- /*
-+ * Enable or disable features/registers based on
-+ * whether the processor supports them
-+ */
-+static bool mci_has_rwproof(void)
-+{
-+ if (cpu_is_at91sam9261() || cpu_is_at91rm9200())
-+ return false;
-+ else
-+ return true;
-+}
-+
-+/*
-+ * The new MCI2 module isn't 100% compatible with the old MCI module,
-+ * and it has a few nice features which we want to use...
-+ */
-+static inline bool atmci_is_mci2(void)
-+{
-+ if (cpu_is_at91sam9g45())
-+ return true;
-+
-+ return false;
-+}
-+
-+
-+/*
- * The debugfs stuff below is mostly optimized away when
- * CONFIG_DEBUG_FS is not set.
- */
-@@ -274,8 +306,13 @@
- [3] = "BLKE",
- [4] = "DTIP",
- [5] = "NOTBUSY",
-+ [6] = "ENDRX",
-+ [7] = "ENDTX",
- [8] = "SDIOIRQA",
- [9] = "SDIOIRQB",
-+ [12] = "SDIOWAIT",
-+ [14] = "RXBUFF",
-+ [15] = "TXBUFE",
- [16] = "RINDE",
- [17] = "RDIRE",
- [18] = "RCRCE",
-@@ -283,6 +320,11 @@
- [20] = "RTOE",
- [21] = "DCRCE",
- [22] = "DTOE",
-+ [23] = "CSTOE",
-+ [24] = "BLKOVRE",
-+ [25] = "DMADONE",
-+ [26] = "FIFOEMPTY",
-+ [27] = "XFRDONE",
- [30] = "OVRE",
- [31] = "UNRE",
- };
-@@ -332,12 +374,33 @@
- buf[MCI_BLKR / 4],
- buf[MCI_BLKR / 4] & 0xffff,
- (buf[MCI_BLKR / 4] >> 16) & 0xffff);
-+ if (atmci_is_mci2())
-+ seq_printf(s, "CSTOR:\t0x%08x\n", buf[MCI_CSTOR / 4]);
-
- /* Don't read RSPR and RDR; it will consume the data there */
-
- atmci_show_status_reg(s, "SR", buf[MCI_SR / 4]);
- atmci_show_status_reg(s, "IMR", buf[MCI_IMR / 4]);
-
-+ if (atmci_is_mci2()) {
-+ u32 val;
-+
-+ val = buf[MCI_DMA / 4];
-+ seq_printf(s, "DMA:\t0x%08x OFFSET=%u CHKSIZE=%u%s\n",
-+ val, val & 3,
-+ ((val >> 4) & 3) ?
-+ 1 << (((val >> 4) & 3) + 1) : 1,
-+ val & MCI_DMAEN ? " DMAEN" : "");
-+
-+ val = buf[MCI_CFG / 4];
-+ seq_printf(s, "CFG:\t0x%08x%s%s%s%s\n",
-+ val,
-+ val & MCI_CFG_FIFOMODE_1DATA ? " FIFOMODE_ONE_DATA" : "",
-+ val & MCI_CFG_FERRCTRL_COR ? " FERRCTRL_CLEAR_ON_READ" : "",
-+ val & MCI_CFG_HSMODE ? " HSMODE" : "",
-+ val & MCI_CFG_LSYNC ? " LSYNC" : "");
-+ }
-+
- kfree(buf);
-
- return 0;
-@@ -532,6 +595,10 @@
-
- dev_vdbg(&host->pdev->dev, "DMA complete\n");
-
-+ if (atmci_is_mci2())
-+ /* Disable DMA hardware handshaking on MCI */
-+ mci_writel(host, DMA, mci_readl(host, DMA) & ~MCI_DMAEN);
-+
- atmci_dma_cleanup(host);
-
- /*
-@@ -567,13 +634,14 @@
- }
-
- static int
--atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data)
-+atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
- {
- struct dma_chan *chan;
- struct dma_async_tx_descriptor *desc;
- struct scatterlist *sg;
- unsigned int i;
- enum dma_data_direction direction;
-+ unsigned int sglen;
-
- /*
- * We don't do DMA on "complex" transfers, i.e. with
-@@ -598,35 +666,54 @@
- if (!chan)
- return -ENODEV;
-
-+ if (atmci_is_mci2())
-+ mci_writel(host, DMA, MCI_DMA_CHKSIZE(3) | MCI_DMAEN);
-+
- if (data->flags & MMC_DATA_READ)
- direction = DMA_FROM_DEVICE;
- else
- direction = DMA_TO_DEVICE;
-
-+ sglen = dma_map_sg(&host->pdev->dev, data->sg, data->sg_len, direction);
-+ if (sglen != data->sg_len)
-+ goto unmap_exit;
-+
- desc = chan->device->device_prep_slave_sg(chan,
- data->sg, data->sg_len, direction,
- DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
- if (!desc)
-- return -ENOMEM;
-+ goto unmap_exit;
-
- host->dma.data_desc = desc;
- desc->callback = atmci_dma_complete;
- desc->callback_param = host;
-- desc->tx_submit(desc);
--
-- /* Go! */
-- chan->device->device_issue_pending(chan);
-
- return 0;
-+unmap_exit:
-+ dma_unmap_sg(&host->pdev->dev, data->sg, sglen, direction);
-+ return -ENOMEM;
-+}
-+
-+static void atmci_submit_data(struct atmel_mci *host)
-+{
-+ struct dma_chan *chan = host->data_chan;
-+ struct dma_async_tx_descriptor *desc = host->dma.data_desc;
-+
-+ if (chan) {
-+ desc->tx_submit(desc);
-+ chan->device->device_issue_pending(chan);
-+ }
- }
-
- #else /* CONFIG_MMC_ATMELMCI_DMA */
-
--static int atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data)
-+static int atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
- {
- return -ENOSYS;
- }
-
-+static void atmci_submit_data(struct atmel_mci *host) {}
-+
- static void atmci_stop_dma(struct atmel_mci *host)
- {
- /* Data transfer was stopped by the interrupt handler */
-@@ -640,7 +727,7 @@
- * Returns a mask of interrupt flags to be enabled after the whole
- * request has been prepared.
- */
--static u32 atmci_submit_data(struct atmel_mci *host, struct mmc_data *data)
-+static u32 atmci_prepare_data(struct atmel_mci *host, struct mmc_data *data)
- {
- u32 iflags;
-
-@@ -651,7 +738,7 @@
- host->data = data;
-
- iflags = ATMCI_DATA_ERROR_FLAGS;
-- if (atmci_submit_data_dma(host, data)) {
-+ if (atmci_prepare_data_dma(host, data)) {
- host->data_chan = NULL;
-
- /*
-@@ -697,6 +784,8 @@
- mci_writel(host, CR, MCI_CR_SWRST);
- mci_writel(host, CR, MCI_CR_MCIEN);
- mci_writel(host, MR, host->mode_reg);
-+ if (atmci_is_mci2())
-+ mci_writel(host, CFG, host->cfg_reg);
- host->need_reset = false;
- }
- mci_writel(host, SDCR, slot->sdc_reg);
-@@ -712,6 +801,7 @@
- while (!(mci_readl(host, SR) & MCI_CMDRDY))
- cpu_relax();
- }
-+ iflags = 0;
- data = mrq->data;
- if (data) {
- atmci_set_timeout(host, slot, data);
-@@ -721,15 +811,17 @@
- | MCI_BLKLEN(data->blksz));
- dev_vdbg(&slot->mmc->class_dev, "BLKR=0x%08x\n",
- MCI_BCNT(data->blocks) | MCI_BLKLEN(data->blksz));
-+
-+ iflags |= atmci_prepare_data(host, data);
- }
-
-- iflags = MCI_CMDRDY;
-+ iflags |= MCI_CMDRDY;
- cmd = mrq->cmd;
- cmdflags = atmci_prepare_command(slot->mmc, cmd);
- atmci_start_command(host, cmd, cmdflags);
-
- if (data)
-- iflags |= atmci_submit_data(host, data);
-+ atmci_submit_data(host);
-
- if (mrq->stop) {
- host->stop_cmdr = atmci_prepare_command(slot->mmc, mrq->stop);
-@@ -825,6 +917,8 @@
- clk_enable(host->mck);
- mci_writel(host, CR, MCI_CR_SWRST);
- mci_writel(host, CR, MCI_CR_MCIEN);
-+ if (atmci_is_mci2())
-+ mci_writel(host, CFG, host->cfg_reg);
- }
-
- /*
-@@ -847,18 +941,56 @@
- clkdiv = 255;
- }
-
-+#if defined(AT91_HSMODE)
-+ /* Not needed for normal operation previous calculation
-+ * takes 50MHz into account */
-+#if 0
-+ /* fake clkdiv for tests @ 16,6MHz || 12,5MHz */
-+ if (ios->clock >= 25000000) {
-+ clkdiv = 3;
-+ }
-+#endif
-+#if 0
-+ /* fake clkdiv for tests @ 33MHz || 25MHz */
-+ if (ios->clock >= 25000000) {
-+ clkdiv = 1;
-+ }
-+#endif
-+#if 0
-+ /* fake clkdiv for tests @ 66MHz || 50MHz */
-+ if (ios->clock >= 25000000) {
-+ clkdiv = 0;
-+ }
-+#endif
-+#endif
-+
-+ host->mode_reg = MCI_MR_CLKDIV(clkdiv);
-+
- /*
- * WRPROOF and RDPROOF prevent overruns/underruns by
- * stopping the clock when the FIFO is full/empty.
- * This state is not expected to last for long.
- */
-- host->mode_reg = MCI_MR_CLKDIV(clkdiv) | MCI_MR_WRPROOF
-- | MCI_MR_RDPROOF;
-+ if (mci_has_rwproof())
-+ host->mode_reg |= (MCI_MR_WRPROOF | MCI_MR_RDPROOF);
-
-- if (list_empty(&host->queue))
-+#if defined(AT91_HSMODE)
-+ if (atmci_is_mci2()) {
-+ /* setup High Speed mode in relation with card capacity */
-+ if (ios->timing == MMC_TIMING_SD_HS)
-+ host->cfg_reg |= MCI_CFG_HSMODE;
-+ else
-+ host->cfg_reg &= ~MCI_CFG_HSMODE;
-+ }
-+#endif
-+
-+ if (list_empty(&host->queue)) {
- mci_writel(host, MR, host->mode_reg);
-- else
-+ if (atmci_is_mci2())
-+ mci_writel(host, CFG, host->cfg_reg);
-+ } else {
- host->need_clock_update = true;
-+ }
-
- spin_unlock_bh(&host->lock);
- } else {
-@@ -954,8 +1086,11 @@
- * necessary if set_ios() is called when a different slot is
- * busy transfering data.
- */
-- if (host->need_clock_update)
-+ if (host->need_clock_update) {
- mci_writel(host, MR, host->mode_reg);
-+ if (atmci_is_mci2())
-+ mci_writel(host, CFG, host->cfg_reg);
-+ }
-
- host->cur_slot->mrq = NULL;
- host->mrq = NULL;
-@@ -1059,6 +1194,8 @@
- mci_writel(host, CR, MCI_CR_SWRST);
- mci_writel(host, CR, MCI_CR_MCIEN);
- mci_writel(host, MR, host->mode_reg);
-+ if (atmci_is_mci2())
-+ mci_writel(host, CFG, host->cfg_reg);
-
- host->data = NULL;
- host->cmd = NULL;
-@@ -1462,6 +1599,10 @@
- mmc->f_min = DIV_ROUND_UP(host->bus_hz, 512);
- mmc->f_max = host->bus_hz / 2;
- mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
-+#if defined(AT91_HSMODE)
-+ if (atmci_is_mci2())
-+ mmc->caps |= MMC_CAP_SD_HIGHSPEED;
-+#endif
- if (slot_data->bus_width >= 4)
- mmc->caps |= MMC_CAP_4_BIT_DATA;
-
-@@ -1544,16 +1685,75 @@
- }
-
- #ifdef CONFIG_MMC_ATMELMCI_DMA
--static bool filter(struct dma_chan *chan, void *slave)
-+static struct device *find_slave_dev(void *slave)
- {
-- struct dw_dma_slave *dws = slave;
-+ if (!slave)
-+ return NULL;
-+
-+ if (cpu_is_at32ap7000())
-+ return ((struct dw_dma_slave *)slave)->dma_dev;
-+ else
-+ return ((struct at_dma_slave *)slave)->dma_dev;
-+}
-
-- if (dws->dma_dev == chan->device->dev) {
-- chan->private = dws;
-+static void setup_dma_addr(struct mci_platform_data *pdata,
-+ dma_addr_t tx_addr, dma_addr_t rx_addr)
-+{
-+ if (!pdata)
-+ return;
-+
-+ if (cpu_is_at32ap7000()) {
-+ struct dw_dma_slave *dws = pdata->dma_slave;
-+
-+ dws->tx_reg = tx_addr;
-+ dws->rx_reg = rx_addr;
-+ } else {
-+ struct at_dma_slave *ats = pdata->dma_slave;
-+
-+ ats->tx_reg = tx_addr;
-+ ats->rx_reg = rx_addr;
-+ }
-+}
-+
-+static bool filter(struct dma_chan *chan, void *slave)
-+{
-+ if (find_slave_dev(slave) == chan->device->dev) {
-+ chan->private = slave;
- return true;
-- } else
-+ } else {
- return false;
-+ }
- }
-+
-+static void atmci_configure_dma(struct atmel_mci *host)
-+{
-+ struct mci_platform_data *pdata;
-+
-+ if (host == NULL)
-+ return;
-+
-+ pdata = host->pdev->dev.platform_data;
-+
-+ if (pdata && find_slave_dev(pdata->dma_slave)) {
-+ dma_cap_mask_t mask;
-+
-+ setup_dma_addr(pdata, host->mapbase + MCI_TDR,
-+ host->mapbase + MCI_RDR);
-+
-+ /* Try to grab a DMA channel */
-+ dma_cap_zero(mask);
-+ dma_cap_set(DMA_SLAVE, mask);
-+ host->dma.chan = dma_request_channel(mask, filter, pdata->dma_slave);
-+ }
-+ if (!host->dma.chan)
-+ dev_notice(&host->pdev->dev, "DMA not available, using PIO\n");
-+ else
-+ dev_info(&host->pdev->dev,
-+ "Using %s for DMA transfers\n",
-+ dma_chan_name(host->dma.chan));
-+}
-+#else
-+static void atmci_configure_dma(struct atmel_mci *host) {}
- #endif
-
- static int __init atmci_probe(struct platform_device *pdev)
-@@ -1607,22 +1807,7 @@
- if (ret)
- goto err_request_irq;
-
--#ifdef CONFIG_MMC_ATMELMCI_DMA
-- if (pdata->dma_slave.dma_dev) {
-- struct dw_dma_slave *dws = &pdata->dma_slave;
-- dma_cap_mask_t mask;
--
-- dws->tx_reg = regs->start + MCI_TDR;
-- dws->rx_reg = regs->start + MCI_RDR;
--
-- /* Try to grab a DMA channel */
-- dma_cap_zero(mask);
-- dma_cap_set(DMA_SLAVE, mask);
-- host->dma.chan = dma_request_channel(mask, filter, dws);
-- }
-- if (!host->dma.chan)
-- dev_notice(&pdev->dev, "DMA not available, using PIO\n");
--#endif /* CONFIG_MMC_ATMELMCI_DMA */
-+ atmci_configure_dma(host);
-
- platform_set_drvdata(pdev, host);
-
-@@ -1642,8 +1827,10 @@
- nr_slots++;
- }
-
-- if (!nr_slots)
-+ if (!nr_slots) {
-+ dev_err(&pdev->dev, "init failed: no slot defined\n");
- goto err_init_slot;
-+ }
-
- dev_info(&pdev->dev,
- "Atmel MCI controller at 0x%08lx irq %d, %u slots\n",
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9260_devices.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/at91sam9260_devices.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9260_devices.c 2011-02-01 16:40:30.152108635 +0100
-@@ -424,6 +424,102 @@
- void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
- #endif
-
-+/* --------------------------------------------------------------------
-+ * MMC / SD Slot for Atmel MCI Driver
-+ * -------------------------------------------------------------------- */
-+
-+#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
-+static u64 mmc_dmamask = DMA_BIT_MASK(32);
-+static struct mci_platform_data mmc_data;
-+
-+static struct resource mmc_resources[] = {
-+ [0] = {
-+ .start = AT91SAM9260_BASE_MCI,
-+ .end = AT91SAM9260_BASE_MCI + SZ_16K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = AT91SAM9260_ID_MCI,
-+ .end = AT91SAM9260_ID_MCI,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device at91sam9260_mmc_device = {
-+ .name = "atmel_mci",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &mmc_dmamask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ .platform_data = &mmc_data,
-+ },
-+ .resource = mmc_resources,
-+ .num_resources = ARRAY_SIZE(mmc_resources),
-+};
-+
-+void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)
-+{
-+ unsigned int i;
-+ unsigned int slot_count = 0;
-+
-+ if (!data)
-+ return;
-+
-+ for (i = 0; i < ATMEL_MCI_MAX_NR_SLOTS; i++) {
-+ if (data->slot[i].bus_width) {
-+ /* input/irq */
-+ if (data->slot[i].detect_pin) {
-+ at91_set_gpio_input(data->slot[i].detect_pin, 1);
-+ at91_set_deglitch(data->slot[i].detect_pin, 1);
-+ }
-+ if (data->slot[i].wp_pin)
-+ at91_set_gpio_input(data->slot[i].wp_pin, 1);
-+
-+ switch(i) {
-+ case 0:
-+ /* CMD */
-+ at91_set_A_periph(AT91_PIN_PA7, 1);
-+ /* DAT0, maybe DAT1..DAT3 */
-+ at91_set_A_periph(AT91_PIN_PA6, 1);
-+ if (data->slot[i].bus_width == 4) {
-+ at91_set_A_periph(AT91_PIN_PA9, 1);
-+ at91_set_A_periph(AT91_PIN_PA10, 1);
-+ at91_set_A_periph(AT91_PIN_PA11, 1);
-+ }
-+ slot_count++;
-+ break;
-+ case 1:
-+ /* CMD */
-+ at91_set_B_periph(AT91_PIN_PA1, 1);
-+ /* DAT0, maybe DAT1..DAT3 */
-+ at91_set_B_periph(AT91_PIN_PA0, 1);
-+ if (data->slot[i].bus_width == 4) {
-+ at91_set_B_periph(AT91_PIN_PA5, 1);
-+ at91_set_B_periph(AT91_PIN_PA4, 1);
-+ at91_set_B_periph(AT91_PIN_PA3, 1);
-+ }
-+ slot_count++;
-+ break;
-+ default:
-+ printk(KERN_ERR
-+ "AT91: SD/MMC slot %d not available\n", i);
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (slot_count) {
-+ /* CLK */
-+ at91_set_A_periph(AT91_PIN_PA8, 0);
-+
-+ mmc_data = *data;
-+ platform_device_register(&at91sam9260_mmc_device);
-+ }
-+}
-+#else
-+void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) {}
-+#endif
-+
-
- /* --------------------------------------------------------------------
- * NAND / SmartMedia
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c 2011-02-01 16:40:30.193007582 +0100
-@@ -0,0 +1,338 @@
-+/*
-+ * Copyright (C) 2005 SAN People
-+ * Copyright (C) 2008 Atmel
-+ * Copyright (C) 2009 Rob Emanuele
-+ *
-+ * 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/mm.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/at73c213.h>
-+#include <linux/clk.h>
-+
-+#include <mach/hardware.h>
-+#include <asm/setup.h>
-+#include <asm/mach-types.h>
-+#include <asm/irq.h>
-+
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <asm/mach/irq.h>
-+
-+#include <mach/board.h>
-+#include <mach/gpio.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
-+#include <mach/at91sam9_smc.h>
-+
-+#include "sam9_smc.h"
-+#include "generic.h"
-+
-+
-+static void __init ek_map_io(void)
-+{
-+ /* Initialize processor: 18.432 MHz crystal */
-+ at91sam9260_initialize(18432000);
-+
-+ /* DGBU on ttyS0. (Rx & Tx only) */
-+ at91_register_uart(0, 0, 0);
-+
-+ /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-+ at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-+ | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-+ | ATMEL_UART_RI);
-+
-+ /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-+ at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-+
-+ /* set serial console to ttyS0 (ie, DBGU) */
-+ at91_set_serial_console(0);
-+}
-+
-+static void __init ek_init_irq(void)
-+{
-+ at91sam9260_init_interrupts(NULL);
-+}
-+
-+
-+/*
-+ * USB Host port
-+ */
-+static struct at91_usbh_data __initdata ek_usbh_data = {
-+ .ports = 2,
-+};
-+
-+/*
-+ * USB Device port
-+ */
-+static struct at91_udc_data __initdata ek_udc_data = {
-+ .vbus_pin = AT91_PIN_PC5,
-+ .pullup_pin = 0, /* pull-up driven by UDC */
-+};
-+
-+
-+/*
-+ * SPI devices.
-+ */
-+static struct spi_board_info ek_spi_devices[] = {
-+#if !(defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_AT91))
-+ { /* DataFlash chip */
-+ .modalias = "mtd_dataflash",
-+ .chip_select = 1,
-+ .max_speed_hz = 15 * 1000 * 1000,
-+ .bus_num = 0,
-+ },
-+#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
-+ { /* DataFlash card */
-+ .modalias = "mtd_dataflash",
-+ .chip_select = 0,
-+ .max_speed_hz = 15 * 1000 * 1000,
-+ .bus_num = 0,
-+ },
-+#endif
-+#endif
-+};
-+
-+
-+/*
-+ * MACB Ethernet device
-+ */
-+static struct at91_eth_data __initdata ek_macb_data = {
-+ .phy_irq_pin = AT91_PIN_PB0,
-+ .is_rmii = 1,
-+};
-+
-+
-+/*
-+ * NAND flash
-+ */
-+static struct mtd_partition __initdata ek_nand_partition[] = {
-+ {
-+ .name = "Bootstrap",
-+ .offset = 0,
-+ .size = 4 * SZ_1M,
-+ },
-+ {
-+ .name = "Partition 1",
-+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = 60 * SZ_1M,
-+ },
-+ {
-+ .name = "Partition 2",
-+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = MTDPART_SIZ_FULL,
-+ },
-+};
-+
-+static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-+{
-+ *num_partitions = ARRAY_SIZE(ek_nand_partition);
-+ return ek_nand_partition;
-+}
-+
-+/* det_pin is not connected */
-+static struct atmel_nand_data __initdata ek_nand_data = {
-+ .ale = 21,
-+ .cle = 22,
-+ .rdy_pin = AT91_PIN_PC13,
-+ .enable_pin = AT91_PIN_PC14,
-+ .partition_info = nand_partitions,
-+#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
-+ .bus_width_16 = 1,
-+#else
-+ .bus_width_16 = 0,
-+#endif
-+};
-+
-+static struct sam9_smc_config __initdata ek_nand_smc_config = {
-+ .ncs_read_setup = 0,
-+ .nrd_setup = 2,
-+ .ncs_write_setup = 0,
-+ .nwe_setup = 2,
-+
-+ .ncs_read_pulse = 4,
-+ .nrd_pulse = 4,
-+ .ncs_write_pulse = 4,
-+ .nwe_pulse = 4,
-+
-+ .read_cycle = 7,
-+ .write_cycle = 7,
-+
-+ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
-+ .tdf_cycles = 3,
-+};
-+
-+static void __init ek_add_device_nand(void)
-+{
-+ /* setup bus-width (8 or 16) */
-+ if (ek_nand_data.bus_width_16)
-+ ek_nand_smc_config.mode |= AT91_SMC_DBW_16;
-+ else
-+ ek_nand_smc_config.mode |= AT91_SMC_DBW_8;
-+
-+ /* configure chip-select 3 (NAND) */
-+ sam9_smc_configure(3, &ek_nand_smc_config);
-+
-+ at91_add_device_nand(&ek_nand_data);
-+}
-+
-+
-+/*
-+ * MCI (SD/MMC)
-+ * wp_pin is not connected
-+ */
-+#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
-+static struct mci_platform_data __initdata ek_mmc_data = {
-+ .slot[0] = {
-+ .bus_width = 4,
-+ .detect_pin = AT91_PIN_PC2,
-+ .wp_pin = -ENODEV,
-+ },
-+ .slot[1] = {
-+ .bus_width = 4,
-+ .detect_pin = AT91_PIN_PC9,
-+ .wp_pin = -ENODEV,
-+ },
-+
-+};
-+#else
-+static struct at91_mmc_data __initdata ek_mmc_data = {
-+ .slot_b = 1, /* Only one slot so use slot B */
-+ .wire4 = 1,
-+ .det_pin = AT91_PIN_PC9,
-+};
-+#endif
-+
-+/*
-+ * LEDs
-+ */
-+static struct gpio_led ek_leds[] = {
-+ { /* "bottom" led, green, userled1 to be defined */
-+ .name = "ds5",
-+ .gpio = AT91_PIN_PB8,
-+ .active_low = 1,
-+ .default_trigger = "none",
-+ },
-+ { /* "power" led, yellow */
-+ .name = "ds1",
-+ .gpio = AT91_PIN_PB9,
-+ .default_trigger = "heartbeat",
-+ }
-+};
-+
-+/*
-+ * GPIO Buttons
-+ */
-+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-+static struct gpio_keys_button ek_buttons[] = {
-+ {
-+ .gpio = AT91_PIN_PA30,
-+ .code = BTN_3,
-+ .desc = "Button 3",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ },
-+ {
-+ .gpio = AT91_PIN_PA31,
-+ .code = BTN_4,
-+ .desc = "Button 4",
-+ .active_low = 1,
-+ .wakeup = 1,
-+ }
-+};
-+
-+static struct gpio_keys_platform_data ek_button_data = {
-+ .buttons = ek_buttons,
-+ .nbuttons = ARRAY_SIZE(ek_buttons),
-+};
-+
-+static struct platform_device ek_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &ek_button_data,
-+ }
-+};
-+
-+static void __init ek_add_device_buttons(void)
-+{
-+ at91_set_gpio_input(AT91_PIN_PA30, 1); /* btn3 */
-+ at91_set_deglitch(AT91_PIN_PA30, 1);
-+ at91_set_gpio_input(AT91_PIN_PA31, 1); /* btn4 */
-+ at91_set_deglitch(AT91_PIN_PA31, 1);
-+
-+ platform_device_register(&ek_button_device);
-+}
-+#else
-+static void __init ek_add_device_buttons(void) {}
-+#endif
-+
-+
-+static struct i2c_board_info __initdata ek_i2c_devices[] = {
-+ {
-+ I2C_BOARD_INFO("24c512", 0x50),
-+ I2C_BOARD_INFO("wm8731", 0x1b),
-+ },
-+};
-+
-+
-+static void __init ek_board_init(void)
-+{
-+ /* Serial */
-+ at91_add_device_serial();
-+ /* USB Host */
-+ at91_add_device_usbh(&ek_usbh_data);
-+ /* USB Device */
-+ at91_add_device_udc(&ek_udc_data);
-+ /* SPI */
-+ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
-+ /* NAND */
-+ ek_add_device_nand();
-+ /* Ethernet */
-+ at91_add_device_eth(&ek_macb_data);
-+ /* MMC */
-+#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
-+ at91_add_device_mci(0, &ek_mmc_data);
-+#else
-+ at91_add_device_mmc(0, &ek_mmc_data);
-+#endif
-+ /* I2C */
-+ at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
-+ /* LEDs */
-+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
-+ /* Push Buttons */
-+ ek_add_device_buttons();
-+ /* PCK0 provides MCLK to the WM8731 */
-+ at91_set_B_periph(AT91_PIN_PC1, 0);
-+ /* SSC (for WM8731) */
-+ at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX);
-+}
-+
-+MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
-+ /* Maintainer: Rob Emanuele */
-+ .phys_io = AT91_BASE_SYS,
-+ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
-+ .boot_params = AT91_SDRAM_BASE + 0x100,
-+ .timer = &at91sam926x_timer,
-+ .map_io = ek_map_io,
-+ .init_irq = ek_init_irq,
-+ .init_machine = ek_board_init,
-+MACHINE_END
-Index: linux-2.6.30/arch/avr32/mach-at32ap/at32ap700x.c
-===================================================================
---- linux-2.6.30.orig/arch/avr32/mach-at32ap/at32ap700x.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/avr32/mach-at32ap/at32ap700x.c 2011-02-01 16:40:30.157049210 +0100
-@@ -1320,7 +1320,7 @@
- at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
- {
- struct platform_device *pdev;
-- struct dw_dma_slave *dws = &data->dma_slave;
-+ struct dw_dma_slave *dws;
- u32 pioa_mask;
- u32 piob_mask;
-
-@@ -1339,6 +1339,8 @@
- ARRAY_SIZE(atmel_mci0_resource)))
- goto fail;
-
-+ dws = kzalloc(sizeof(struct dw_dma_slave), GFP_KERNEL);
-+
- dws->dma_dev = &dw_dmac0_device.dev;
- dws->reg_width = DW_DMA_SLAVE_WIDTH_32BIT;
- dws->cfg_hi = (DWC_CFGH_SRC_PER(0)
-@@ -1346,6 +1348,8 @@
- dws->cfg_lo &= ~(DWC_CFGL_HS_DST_POL
- | DWC_CFGL_HS_SRC_POL);
-
-+ data->dma_slave = dws;
-+
- if (platform_device_add_data(pdev, data,
- sizeof(struct mci_platform_data)))
- goto fail;
-Index: linux-2.6.30/include/linux/atmel-mci.h
-===================================================================
---- linux-2.6.30.orig/include/linux/atmel-mci.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/include/linux/atmel-mci.h 2011-02-01 16:40:30.157049210 +0100
-@@ -4,6 +4,7 @@
- #define ATMEL_MCI_MAX_NR_SLOTS 2
-
- #include <linux/dw_dmac.h>
-+#include <mach/at_hdmac.h>
-
- /**
- * struct mci_slot_pdata - board-specific per-slot configuration
-@@ -32,7 +33,7 @@
- * @slot: Per-slot configuration data.
- */
- struct mci_platform_data {
-- struct dw_dma_slave dma_slave;
-+ void *dma_slave;
- struct mci_slot_pdata slot[ATMEL_MCI_MAX_NR_SLOTS];
- };
-
-Index: linux-2.6.30/drivers/mmc/host/at91_mci.c
-===================================================================
---- linux-2.6.30.orig/drivers/mmc/host/at91_mci.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/mmc/host/at91_mci.c 2011-02-01 16:40:30.161007816 +0100
-@@ -79,6 +79,17 @@
-
- #define DRIVER_NAME "at91_mci"
-
-+static inline int at91mci_is_mci1rev2xx(void)
-+{
-+ return ( cpu_is_at91sam9260()
-+ || cpu_is_at91sam9263()
-+ || cpu_is_at91cap9()
-+ || cpu_is_at91sam9rl()
-+ || cpu_is_at91sam9g10()
-+ || cpu_is_at91sam9g20()
-+ );
-+}
-+
- #define FL_SENT_COMMAND (1 << 0)
- #define FL_SENT_STOP (1 << 1)
-
-@@ -201,8 +212,8 @@
- size = data->blksz * data->blocks;
- len = data->sg_len;
-
-- /* AT91SAM926[0/3] Data Write Operation and number of bytes erratum */
-- if (cpu_is_at91sam9260() || cpu_is_at91sam9263() || cpu_is_at91sam9g20())
-+ /* at91mci MCI1 rev2xx Data Write Operation and number of bytes erratum */
-+ if (at91mci_is_mci1rev2xx())
- if (host->total_length == 12)
- memset(dmabuf, 0, 12);
-
-@@ -462,7 +473,7 @@
- at91_mci_write(host, AT91_MCI_DTOR, AT91_MCI_DTOMUL_1M | AT91_MCI_DTOCYC);
- mr = AT91_MCI_PDCMODE | 0x34a;
-
-- if (cpu_is_at91sam9260() || cpu_is_at91sam9263() || cpu_is_at91sam9g20())
-+ if (at91mci_is_mci1rev2xx())
- mr |= AT91_MCI_RDPROOF | AT91_MCI_WRPROOF;
-
- at91_mci_write(host, AT91_MCI_MR, mr);
-@@ -615,10 +626,10 @@
- */
- host->total_length = block_length * blocks;
- /*
-- * AT91SAM926[0/3] Data Write Operation and
-+ * at91mci MCI1 rev2xx Data Write Operation and
- * number of bytes erratum
- */
-- if (cpu_is_at91sam9260 () || cpu_is_at91sam9263() || cpu_is_at91sam9g20())
-+ if (at91mci_is_mci1rev2xx())
- if (host->total_length < 12)
- host->total_length = 12;
-
-@@ -678,11 +689,10 @@
- at91_mci_send_command(host, host->request->stop);
- } else {
- del_timer(&host->timer);
-- /* the at91rm9200 mci controller hangs after some transfers,
-+ /* the mci controller hangs after some transfers,
- * and the workaround is to reset it after each transfer.
- */
-- if (cpu_is_at91rm9200())
-- at91_reset_host(host);
-+ at91_reset_host(host);
- mmc_request_done(host->mmc, host->request);
- }
- }
-@@ -1007,7 +1017,7 @@
- mmc->f_min = 375000;
- mmc->f_max = 25000000;
- mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
-- mmc->caps = MMC_CAP_SDIO_IRQ;
-+ mmc->caps = 0;
-
- mmc->max_blk_size = 4095;
- mmc->max_blk_count = mmc->max_req_size;
-@@ -1018,13 +1028,20 @@
- host->bus_mode = 0;
- host->board = pdev->dev.platform_data;
- if (host->board->wire4) {
-- if (cpu_is_at91sam9260() || cpu_is_at91sam9263() || cpu_is_at91sam9g20())
-+ if (at91mci_is_mci1rev2xx())
- mmc->caps |= MMC_CAP_4_BIT_DATA;
- else
- dev_warn(&pdev->dev, "4 wire bus mode not supported"
- " - using 1 wire\n");
- }
-
-+ /* Add SDIO capability when available */
-+ if (at91mci_is_mci1rev2xx()) {
-+ /* at91mci MCI1 rev2xx sdio interrupt erratum */
-+ if (host->board->wire4 || !host->board->slot_b)
-+ mmc->caps |= MMC_CAP_SDIO_IRQ;
-+ }
-+
- /*
- * Reserve GPIOs ... board init code makes sure these pins are set
- * up as GPIOs with the right direction (input, except for vcc)
-Index: linux-2.6.30/drivers/dma/dw_dmac.c
-===================================================================
---- linux-2.6.30.orig/drivers/dma/dw_dmac.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/dma/dw_dmac.c 2011-02-01 16:40:30.161007816 +0100
-@@ -212,16 +212,25 @@
- list_splice_init(&txd->tx_list, &dwc->free_list);
- list_move(&desc->desc_node, &dwc->free_list);
-
-- /*
-- * We use dma_unmap_page() regardless of how the buffers were
-- * mapped before they were submitted...
-- */
-- if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP))
-- dma_unmap_page(chan2parent(&dwc->chan), desc->lli.dar,
-- desc->len, DMA_FROM_DEVICE);
-- if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP))
-- dma_unmap_page(chan2parent(&dwc->chan), desc->lli.sar,
-- desc->len, DMA_TO_DEVICE);
-+ if (!dwc->chan.private) {
-+ struct device *parent = chan2parent(&dwc->chan);
-+ if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
-+ if (txd->flags & DMA_COMPL_DEST_UNMAP_SINGLE)
-+ dma_unmap_single(parent, desc->lli.dar,
-+ desc->len, DMA_FROM_DEVICE);
-+ else
-+ dma_unmap_page(parent, desc->lli.dar,
-+ desc->len, DMA_FROM_DEVICE);
-+ }
-+ if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
-+ if (txd->flags & DMA_COMPL_SRC_UNMAP_SINGLE)
-+ dma_unmap_single(parent, desc->lli.sar,
-+ desc->len, DMA_TO_DEVICE);
-+ else
-+ dma_unmap_page(parent, desc->lli.sar,
-+ desc->len, DMA_TO_DEVICE);
-+ }
-+ }
-
- /*
- * The API requires that no submissions are done from a
-@@ -658,8 +667,6 @@
- reg_width = dws->reg_width;
- prev = first = NULL;
-
-- sg_len = dma_map_sg(chan2parent(chan), sgl, sg_len, direction);
--
- switch (direction) {
- case DMA_TO_DEVICE:
- ctllo = (DWC_DEFAULT_CTLLO
-Index: linux-2.6.30/sound/atmel/Kconfig
-===================================================================
---- linux-2.6.30.orig/sound/atmel/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/atmel/Kconfig 2011-02-01 16:40:30.161007816 +0100
-@@ -12,7 +12,7 @@
- tristate "Atmel AC97 Controller (AC97C) driver"
- select SND_PCM
- select SND_AC97_CODEC
-- depends on DW_DMAC && AVR32
-+ depends on (DW_DMAC && AVR32) || ARCH_AT91
- help
- ALSA sound driver for the Atmel AC97 controller.
-
-Index: linux-2.6.30/sound/atmel/ac97c.c
-===================================================================
---- linux-2.6.30.orig/sound/atmel/ac97c.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/atmel/ac97c.c 2011-02-01 16:40:30.169008345 +0100
-@@ -13,6 +13,7 @@
- #include <linux/device.h>
- #include <linux/dmaengine.h>
- #include <linux/dma-mapping.h>
-+#include <linux/atmel_pdc.h>
- #include <linux/init.h>
- #include <linux/interrupt.h>
- #include <linux/module.h>
-@@ -31,6 +32,10 @@
-
- #include <linux/dw_dmac.h>
-
-+#include <mach/cpu.h>
-+#include <mach/hardware.h>
-+#include <mach/gpio.h>
-+
- #include "ac97c.h"
-
- enum {
-@@ -63,6 +68,7 @@
- u64 cur_format;
- unsigned int cur_rate;
- unsigned long flags;
-+ int period;
- /* Serialize access to opened variable */
- spinlock_t lock;
- void __iomem *regs;
-@@ -150,7 +156,7 @@
- .rates = (SNDRV_PCM_RATE_CONTINUOUS),
- .rate_min = 4000,
- .rate_max = 48000,
-- .channels_min = 1,
-+ .channels_min = 2,
- .channels_max = 2,
- .buffer_bytes_max = 2 * 2 * 64 * 2048,
- .period_bytes_min = 4096,
-@@ -241,10 +247,13 @@
- params_buffer_bytes(hw_params));
- if (retval < 0)
- return retval;
-- /* snd_pcm_lib_malloc_pages returns 1 if buffer is changed. */
-- if (retval == 1)
-- if (test_and_clear_bit(DMA_TX_READY, &chip->flags))
-- dw_dma_cyclic_free(chip->dma.tx_chan);
-+
-+ if (cpu_is_at32ap7000()) {
-+ /* snd_pcm_lib_malloc_pages returns 1 if buffer is changed. */
-+ if (retval == 1)
-+ if (test_and_clear_bit(DMA_TX_READY, &chip->flags))
-+ dw_dma_cyclic_free(chip->dma.tx_chan);
-+ }
-
- /* Set restrictions to params. */
- mutex_lock(&opened_mutex);
-@@ -263,12 +272,14 @@
-
- retval = snd_pcm_lib_malloc_pages(substream,
- params_buffer_bytes(hw_params));
-- if (retval < 0)
-- return retval;
-- /* snd_pcm_lib_malloc_pages returns 1 if buffer is changed. */
-- if (retval == 1)
-- if (test_and_clear_bit(DMA_RX_READY, &chip->flags))
-- dw_dma_cyclic_free(chip->dma.rx_chan);
-+ if (cpu_is_at32ap7000()) {
-+ if (retval < 0)
-+ return retval;
-+ /* snd_pcm_lib_malloc_pages returns 1 if buffer is changed. */
-+ if (retval == 1)
-+ if (test_and_clear_bit(DMA_RX_READY, &chip->flags))
-+ dw_dma_cyclic_free(chip->dma.rx_chan);
-+ }
-
- /* Set restrictions to params. */
- mutex_lock(&opened_mutex);
-@@ -282,16 +293,20 @@
- static int atmel_ac97c_playback_hw_free(struct snd_pcm_substream *substream)
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
-- if (test_and_clear_bit(DMA_TX_READY, &chip->flags))
-- dw_dma_cyclic_free(chip->dma.tx_chan);
-+ if (cpu_is_at32ap7000()) {
-+ if (test_and_clear_bit(DMA_TX_READY, &chip->flags))
-+ dw_dma_cyclic_free(chip->dma.tx_chan);
-+ }
- return snd_pcm_lib_free_pages(substream);
- }
-
- static int atmel_ac97c_capture_hw_free(struct snd_pcm_substream *substream)
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
-- if (test_and_clear_bit(DMA_RX_READY, &chip->flags))
-- dw_dma_cyclic_free(chip->dma.rx_chan);
-+ if (cpu_is_at32ap7000()) {
-+ if (test_and_clear_bit(DMA_RX_READY, &chip->flags))
-+ dw_dma_cyclic_free(chip->dma.rx_chan);
-+ }
- return snd_pcm_lib_free_pages(substream);
- }
-
-@@ -299,9 +314,11 @@
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
- struct snd_pcm_runtime *runtime = substream->runtime;
-+ int block_size = frames_to_bytes(runtime, runtime->period_size);
- unsigned long word = ac97c_readl(chip, OCA);
- int retval;
-
-+ chip->period = 0;
- word &= ~(AC97C_CH_MASK(PCM_LEFT) | AC97C_CH_MASK(PCM_RIGHT));
-
- /* assign channels to AC97C channel A */
-@@ -324,7 +341,8 @@
-
- switch (runtime->format) {
- case SNDRV_PCM_FORMAT_S16_LE:
-- word |= AC97C_CMR_CEM_LITTLE;
-+ if (cpu_is_at32ap7000())
-+ word |= AC97C_CMR_CEM_LITTLE;
- break;
- case SNDRV_PCM_FORMAT_S16_BE: /* fall through */
- word &= ~(AC97C_CMR_CEM_LITTLE);
-@@ -363,9 +381,18 @@
- dev_dbg(&chip->pdev->dev, "could not set rate %d Hz\n",
- runtime->rate);
-
-- if (!test_bit(DMA_TX_READY, &chip->flags))
-- retval = atmel_ac97c_prepare_dma(chip, substream,
-- DMA_TO_DEVICE);
-+ if (cpu_is_at32ap7000()) {
-+ if (!test_bit(DMA_TX_READY, &chip->flags))
-+ retval = atmel_ac97c_prepare_dma(chip, substream,
-+ DMA_TO_DEVICE);
-+ } else {
-+ /* Initialize and start the PDC */
-+ writel(runtime->dma_addr, chip->regs + ATMEL_PDC_TPR);
-+ writel(block_size / 2, chip->regs + ATMEL_PDC_TCR);
-+ writel(runtime->dma_addr + block_size,
-+ chip->regs + ATMEL_PDC_TNPR);
-+ writel(block_size / 2, chip->regs + ATMEL_PDC_TNCR);
-+ }
-
- return retval;
- }
-@@ -374,9 +401,11 @@
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
- struct snd_pcm_runtime *runtime = substream->runtime;
-+ int block_size = frames_to_bytes(runtime, runtime->period_size);
- unsigned long word = ac97c_readl(chip, ICA);
- int retval;
-
-+ chip->period = 0;
- word &= ~(AC97C_CH_MASK(PCM_LEFT) | AC97C_CH_MASK(PCM_RIGHT));
-
- /* assign channels to AC97C channel A */
-@@ -415,11 +444,15 @@
- word |= AC97C_CSR_OVRUN;
-
- ac97c_writel(chip, CAMR, word);
--
- /* Enable channel A event interrupt */
- word = ac97c_readl(chip, IMR);
- word |= AC97C_SR_CAEVT;
-- ac97c_writel(chip, IER, word);
-+ ac97c_writel(chip, IER, /*word*/AC97C_SR_CAEVT);
-+
-+ /* Enable channel A event interrupt */
-+ /*word = ac97c_readl(chip, IMR);
-+ word |= AC97C_SR_CAEVT;
-+ ac97c_writel(chip, IER, word);*/
-
- /* set variable rate if needed */
- if (runtime->rate != 48000) {
-@@ -438,9 +471,18 @@
- dev_dbg(&chip->pdev->dev, "could not set rate %d Hz\n",
- runtime->rate);
-
-- if (!test_bit(DMA_RX_READY, &chip->flags))
-- retval = atmel_ac97c_prepare_dma(chip, substream,
-- DMA_FROM_DEVICE);
-+ if (cpu_is_at32ap7000()) {
-+ if (!test_bit(DMA_RX_READY, &chip->flags))
-+ retval = atmel_ac97c_prepare_dma(chip, substream,
-+ DMA_FROM_DEVICE);
-+ } else {
-+ /* Initialize and start the PDC */
-+ writel(runtime->dma_addr, chip->regs + ATMEL_PDC_RPR);
-+ writel(block_size / 2, chip->regs + ATMEL_PDC_RCR);
-+ writel(runtime->dma_addr + block_size,
-+ chip->regs + ATMEL_PDC_RNPR);
-+ writel(block_size / 2, chip->regs + ATMEL_PDC_RNCR);
-+ }
-
- return retval;
- }
-@@ -449,7 +491,7 @@
- atmel_ac97c_playback_trigger(struct snd_pcm_substream *substream, int cmd)
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
-- unsigned long camr;
-+ unsigned long camr, ptcr = 0;
- int retval = 0;
-
- camr = ac97c_readl(chip, CAMR);
-@@ -458,15 +500,22 @@
- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */
- case SNDRV_PCM_TRIGGER_RESUME: /* fall through */
- case SNDRV_PCM_TRIGGER_START:
-- retval = dw_dma_cyclic_start(chip->dma.tx_chan);
-- if (retval)
-- goto out;
-- camr |= AC97C_CMR_CENA;
-+ if (cpu_is_at32ap7000()) {
-+ retval = dw_dma_cyclic_start(chip->dma.tx_chan);
-+ if (retval)
-+ goto out;
-+ } else {
-+ ptcr = ATMEL_PDC_TXTEN;
-+ }
-+ camr |= AC97C_CMR_CENA | AC97C_CSR_ENDTX;
- break;
- case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */
- case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */
- case SNDRV_PCM_TRIGGER_STOP:
-- dw_dma_cyclic_stop(chip->dma.tx_chan);
-+ if (cpu_is_at32ap7000())
-+ dw_dma_cyclic_stop(chip->dma.tx_chan);
-+ else
-+ ptcr = ATMEL_PDC_TXTDIS;
- if (chip->opened <= 1)
- camr &= ~AC97C_CMR_CENA;
- break;
-@@ -476,6 +525,8 @@
- }
-
- ac97c_writel(chip, CAMR, camr);
-+ if (!cpu_is_at32ap7000())
-+ writel(ptcr, chip->regs + ATMEL_PDC_PTCR);
- out:
- return retval;
- }
-@@ -484,7 +535,7 @@
- atmel_ac97c_capture_trigger(struct snd_pcm_substream *substream, int cmd)
- {
- struct atmel_ac97c *chip = snd_pcm_substream_chip(substream);
-- unsigned long camr;
-+ unsigned long camr, ptcr = 0;
- int retval = 0;
-
- camr = ac97c_readl(chip, CAMR);
-@@ -493,15 +544,22 @@
- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */
- case SNDRV_PCM_TRIGGER_RESUME: /* fall through */
- case SNDRV_PCM_TRIGGER_START:
-- retval = dw_dma_cyclic_start(chip->dma.rx_chan);
-- if (retval)
-- goto out;
-+ if (cpu_is_at32ap7000()) {
-+ retval = dw_dma_cyclic_start(chip->dma.rx_chan);
-+ if (retval)
-+ goto out;
-+ } else {
-+ ptcr = ATMEL_PDC_RXTEN;
-+ }
- camr |= AC97C_CMR_CENA;
- break;
- case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */
- case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */
- case SNDRV_PCM_TRIGGER_STOP:
-- dw_dma_cyclic_stop(chip->dma.rx_chan);
-+ if (cpu_is_at32ap7000())
-+ dw_dma_cyclic_stop(chip->dma.rx_chan);
-+ else
-+ ptcr = ATMEL_PDC_RXTDIS;
- if (chip->opened <= 1)
- camr &= ~AC97C_CMR_CENA;
- break;
-@@ -511,6 +569,8 @@
- }
-
- ac97c_writel(chip, CAMR, camr);
-+ if (!cpu_is_at32ap7000())
-+ writel(ptcr, chip->regs + ATMEL_PDC_PTCR);
- out:
- return retval;
- }
-@@ -523,7 +583,10 @@
- snd_pcm_uframes_t frames;
- unsigned long bytes;
-
-- bytes = dw_dma_get_src_addr(chip->dma.tx_chan);
-+ if (cpu_is_at32ap7000())
-+ bytes = dw_dma_get_src_addr(chip->dma.tx_chan);
-+ else
-+ bytes = readl(chip->regs + ATMEL_PDC_TPR);
- bytes -= runtime->dma_addr;
-
- frames = bytes_to_frames(runtime, bytes);
-@@ -540,7 +603,10 @@
- snd_pcm_uframes_t frames;
- unsigned long bytes;
-
-- bytes = dw_dma_get_dst_addr(chip->dma.rx_chan);
-+ if (cpu_is_at32ap7000())
-+ bytes = dw_dma_get_dst_addr(chip->dma.rx_chan);
-+ else
-+ bytes = readl(chip->regs + ATMEL_PDC_RPR);
- bytes -= runtime->dma_addr;
-
- frames = bytes_to_frames(runtime, bytes);
-@@ -578,20 +644,67 @@
- u32 sr = ac97c_readl(chip, SR);
- u32 casr = ac97c_readl(chip, CASR);
- u32 cosr = ac97c_readl(chip, COSR);
-+ u32 camr = ac97c_readl(chip, CAMR);
-
- if (sr & AC97C_SR_CAEVT) {
-- dev_info(&chip->pdev->dev, "channel A event%s%s%s%s%s%s\n",
-+ struct snd_pcm_runtime *runtime;
-+ int offset, next_period, block_size;
-+ dev_dbg(&chip->pdev->dev, "channel A event%s%s%s%s%s%s\n",
- casr & AC97C_CSR_OVRUN ? " OVRUN" : "",
- casr & AC97C_CSR_RXRDY ? " RXRDY" : "",
- casr & AC97C_CSR_UNRUN ? " UNRUN" : "",
- casr & AC97C_CSR_TXEMPTY ? " TXEMPTY" : "",
- casr & AC97C_CSR_TXRDY ? " TXRDY" : "",
- !casr ? " NONE" : "");
-+ if (!cpu_is_at32ap7000()) {
-+ if ((casr & camr) & AC97C_CSR_ENDTX) {
-+ runtime = chip->playback_substream->runtime;
-+ block_size = frames_to_bytes(runtime,
-+ runtime->period_size);
-+ chip->period++;
-+
-+ if (chip->period == runtime->periods)
-+ chip->period = 0;
-+ next_period = chip->period + 1;
-+ if (next_period == runtime->periods)
-+ next_period = 0;
-+
-+ offset = block_size * next_period;
-+
-+ writel(runtime->dma_addr + offset,
-+ chip->regs + ATMEL_PDC_TNPR);
-+ writel(block_size / 2,
-+ chip->regs + ATMEL_PDC_TNCR);
-+
-+ snd_pcm_period_elapsed(
-+ chip->playback_substream);
-+ }
-+ if ((casr & camr) & AC97C_CSR_ENDRX) {
-+ runtime = chip->capture_substream->runtime;
-+ block_size = frames_to_bytes(runtime,
-+ runtime->period_size);
-+ chip->period++;
-+
-+ if (chip->period == runtime->periods)
-+ chip->period = 0;
-+ next_period = chip->period + 1;
-+ if (next_period == runtime->periods)
-+ next_period = 0;
-+
-+ offset = block_size * next_period;
-+
-+ writel(runtime->dma_addr + offset,
-+ chip->regs + ATMEL_PDC_RNPR);
-+ writel(block_size / 2,
-+ chip->regs + ATMEL_PDC_RNCR);
-+ snd_pcm_period_elapsed(chip->capture_substream);
-+ }
-+ }
- retval = IRQ_HANDLED;
- }
-
- if (sr & AC97C_SR_COEVT) {
-- dev_info(&chip->pdev->dev, "codec channel event%s%s%s%s%s\n",
-+ dev_dbg(&chip->pdev->dev, "codec channel event%s%s%s%s%s\n",
- cosr & AC97C_CSR_OVRUN ? " OVRUN" : "",
- cosr & AC97C_CSR_RXRDY ? " RXRDY" : "",
- cosr & AC97C_CSR_TXEMPTY ? " TXEMPTY" : "",
-@@ -608,15 +721,50 @@
- return retval;
- }
-
-+static struct ac97_pcm at91_ac97_pcm_defs[] __devinitdata = {
-+ /* Playback */
-+ {
-+ .exclusive = 1,
-+ .r = { {
-+ .slots = ((1 << AC97_SLOT_PCM_LEFT)
-+ | (1 << AC97_SLOT_PCM_RIGHT)),
-+ } },
-+ },
-+ /* PCM in */
-+ {
-+ .stream = 1,
-+ .exclusive = 1,
-+ .r = { {
-+ .slots = ((1 << AC97_SLOT_PCM_LEFT)
-+ | (1 << AC97_SLOT_PCM_RIGHT)),
-+ } }
-+ },
-+ /* Mic in */
-+ {
-+ .stream = 1,
-+ .exclusive = 1,
-+ .r = { {
-+ .slots = (1<<AC97_SLOT_MIC),
-+ } }
-+ },
-+};
-+
- static int __devinit atmel_ac97c_pcm_new(struct atmel_ac97c *chip)
- {
- struct snd_pcm *pcm;
- struct snd_pcm_hardware hw = atmel_ac97c_hw;
-- int capture, playback, retval;
-+ int capture, playback, retval, err;
-
- capture = test_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
- playback = test_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-
-+ if (!cpu_is_at32ap7000()) {
-+ err = snd_ac97_pcm_assign(chip->ac97_bus,
-+ ARRAY_SIZE(at91_ac97_pcm_defs),
-+ at91_ac97_pcm_defs);
-+ if (err)
-+ return err;
-+ }
- retval = snd_pcm_new(chip->card, chip->card->shortname,
- chip->pdev->id, playback, capture, &pcm);
- if (retval)
-@@ -775,7 +923,12 @@
- return -ENXIO;
- }
-
-- pclk = clk_get(&pdev->dev, "pclk");
-+ if (cpu_is_at32ap7000()) {
-+ pclk = clk_get(&pdev->dev, "pclk");
-+ } else {
-+ pclk = clk_get(&pdev->dev, "ac97_clk");
-+ }
-+
- if (IS_ERR(pclk)) {
- dev_dbg(&pdev->dev, "no peripheral clock\n");
- return PTR_ERR(pclk);
-@@ -844,43 +997,52 @@
- goto err_ac97_bus;
- }
-
-- if (pdata->rx_dws.dma_dev) {
-- struct dw_dma_slave *dws = &pdata->rx_dws;
-- dma_cap_mask_t mask;
-+ if (cpu_is_at32ap7000()) {
-+ if (pdata->rx_dws.dma_dev) {
-+ struct dw_dma_slave *dws = &pdata->rx_dws;
-+ dma_cap_mask_t mask;
-
-- dws->rx_reg = regs->start + AC97C_CARHR + 2;
-+ dws->rx_reg = regs->start + AC97C_CARHR + 2;
-
-- dma_cap_zero(mask);
-- dma_cap_set(DMA_SLAVE, mask);
-+ dma_cap_zero(mask);
-+ dma_cap_set(DMA_SLAVE, mask);
-
-- chip->dma.rx_chan = dma_request_channel(mask, filter, dws);
-+ chip->dma.rx_chan = dma_request_channel(mask, filter,
-+ dws);
-
-- dev_info(&chip->pdev->dev, "using %s for DMA RX\n",
-+ dev_info(&chip->pdev->dev, "using %s for DMA RX\n",
- dev_name(&chip->dma.rx_chan->dev->device));
-- set_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-- }
-+ set_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-+ }
-
-- if (pdata->tx_dws.dma_dev) {
-- struct dw_dma_slave *dws = &pdata->tx_dws;
-- dma_cap_mask_t mask;
-+ if (pdata->tx_dws.dma_dev) {
-+ struct dw_dma_slave *dws = &pdata->tx_dws;
-+ dma_cap_mask_t mask;
-
-- dws->tx_reg = regs->start + AC97C_CATHR + 2;
-+ dws->tx_reg = regs->start + AC97C_CATHR + 2;
-
-- dma_cap_zero(mask);
-- dma_cap_set(DMA_SLAVE, mask);
-+ dma_cap_zero(mask);
-+ dma_cap_set(DMA_SLAVE, mask);
-
-- chip->dma.tx_chan = dma_request_channel(mask, filter, dws);
-+ chip->dma.tx_chan = dma_request_channel(mask, filter,
-+ dws);
-
-- dev_info(&chip->pdev->dev, "using %s for DMA TX\n",
-+ dev_info(&chip->pdev->dev, "using %s for DMA TX\n",
- dev_name(&chip->dma.tx_chan->dev->device));
-- set_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-- }
-+ set_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-+ }
-
-- if (!test_bit(DMA_RX_CHAN_PRESENT, &chip->flags) &&
-- !test_bit(DMA_TX_CHAN_PRESENT, &chip->flags)) {
-- dev_dbg(&pdev->dev, "DMA not available\n");
-- retval = -ENODEV;
-- goto err_dma;
-+ if (!test_bit(DMA_RX_CHAN_PRESENT, &chip->flags) &&
-+ !test_bit(DMA_TX_CHAN_PRESENT, &chip->flags)) {
-+ dev_dbg(&pdev->dev, "DMA not available\n");
-+ retval = -ENODEV;
-+ goto err_dma;
-+ }
-+ } else {
-+ /* Just pretend that we have DMA channel(for at91 i is actually
-+ * the PDC */
-+ set_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-+ set_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
- }
-
- retval = atmel_ac97c_pcm_new(chip);
-@@ -897,20 +1059,22 @@
-
- platform_set_drvdata(pdev, card);
-
-- dev_info(&pdev->dev, "Atmel AC97 controller at 0x%p\n",
-- chip->regs);
-+ dev_info(&pdev->dev, "Atmel AC97 controller at 0x%p, irq = %d\n",
-+ chip->regs, irq);
-
- return 0;
-
- err_dma:
-- if (test_bit(DMA_RX_CHAN_PRESENT, &chip->flags))
-- dma_release_channel(chip->dma.rx_chan);
-- if (test_bit(DMA_TX_CHAN_PRESENT, &chip->flags))
-- dma_release_channel(chip->dma.tx_chan);
-- clear_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-- clear_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-- chip->dma.rx_chan = NULL;
-- chip->dma.tx_chan = NULL;
-+ if (cpu_is_at32ap7000()) {
-+ if (test_bit(DMA_RX_CHAN_PRESENT, &chip->flags))
-+ dma_release_channel(chip->dma.rx_chan);
-+ if (test_bit(DMA_TX_CHAN_PRESENT, &chip->flags))
-+ dma_release_channel(chip->dma.tx_chan);
-+ clear_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-+ clear_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-+ chip->dma.rx_chan = NULL;
-+ chip->dma.tx_chan = NULL;
-+ }
- err_ac97_bus:
- snd_card_set_dev(card, NULL);
-
-@@ -934,12 +1098,13 @@
- struct snd_card *card = platform_get_drvdata(pdev);
- struct atmel_ac97c *chip = card->private_data;
-
-- if (test_bit(DMA_RX_READY, &chip->flags))
-- dw_dma_cyclic_stop(chip->dma.rx_chan);
-- if (test_bit(DMA_TX_READY, &chip->flags))
-- dw_dma_cyclic_stop(chip->dma.tx_chan);
-+ if (cpu_is_at32ap7000()) {
-+ if (test_bit(DMA_RX_READY, &chip->flags))
-+ dw_dma_cyclic_stop(chip->dma.rx_chan);
-+ if (test_bit(DMA_TX_READY, &chip->flags))
-+ dw_dma_cyclic_stop(chip->dma.tx_chan);
-+ }
- clk_disable(chip->pclk);
--
- return 0;
- }
-
-@@ -949,11 +1114,12 @@
- struct atmel_ac97c *chip = card->private_data;
-
- clk_enable(chip->pclk);
-- if (test_bit(DMA_RX_READY, &chip->flags))
-- dw_dma_cyclic_start(chip->dma.rx_chan);
-- if (test_bit(DMA_TX_READY, &chip->flags))
-- dw_dma_cyclic_start(chip->dma.tx_chan);
--
-+ if (cpu_is_at32ap7000()) {
-+ if (test_bit(DMA_RX_READY, &chip->flags))
-+ dw_dma_cyclic_start(chip->dma.rx_chan);
-+ if (test_bit(DMA_TX_READY, &chip->flags))
-+ dw_dma_cyclic_start(chip->dma.tx_chan);
-+ }
- return 0;
- }
- #else
-@@ -978,14 +1144,16 @@
- iounmap(chip->regs);
- free_irq(chip->irq, chip);
-
-- if (test_bit(DMA_RX_CHAN_PRESENT, &chip->flags))
-- dma_release_channel(chip->dma.rx_chan);
-- if (test_bit(DMA_TX_CHAN_PRESENT, &chip->flags))
-- dma_release_channel(chip->dma.tx_chan);
-- clear_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-- clear_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-- chip->dma.rx_chan = NULL;
-- chip->dma.tx_chan = NULL;
-+ if (cpu_is_at32ap7000()) {
-+ if (test_bit(DMA_RX_CHAN_PRESENT, &chip->flags))
-+ dma_release_channel(chip->dma.rx_chan);
-+ if (test_bit(DMA_TX_CHAN_PRESENT, &chip->flags))
-+ dma_release_channel(chip->dma.tx_chan);
-+ clear_bit(DMA_RX_CHAN_PRESENT, &chip->flags);
-+ clear_bit(DMA_TX_CHAN_PRESENT, &chip->flags);
-+ chip->dma.rx_chan = NULL;
-+ chip->dma.tx_chan = NULL;
-+ }
-
- snd_card_set_dev(card, NULL);
- snd_card_free(card);
-Index: linux-2.6.30/arch/arm/mach-at91/at91sam9263_devices.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/at91sam9263_devices.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/at91sam9263_devices.c 2011-02-01 16:40:30.161007816 +0100
-@@ -707,9 +707,9 @@
- * AC97
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_SND_AT91_AC97) || defined(CONFIG_SND_AT91_AC97_MODULE)
-+#if defined(CONFIG_SND_ATMEL_AC97C) || defined(CONFIG_SND_ATMEL_AC97C_MODULE)
- static u64 ac97_dmamask = DMA_BIT_MASK(32);
--static struct atmel_ac97_data ac97_data;
-+static struct ac97c_platform_data ac97_data;
-
- static struct resource ac97_resources[] = {
- [0] = {
-@@ -725,8 +725,8 @@
- };
-
- static struct platform_device at91sam9263_ac97_device = {
-- .name = "ac97c",
-- .id = 1,
-+ .name = "atmel_ac97c",
-+ .id = 0,
- .dev = {
- .dma_mask = &ac97_dmamask,
- .coherent_dma_mask = DMA_BIT_MASK(32),
-@@ -736,7 +736,7 @@
- .num_resources = ARRAY_SIZE(ac97_resources),
- };
-
--void __init at91_add_device_ac97(struct atmel_ac97_data *data)
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data)
- {
- if (!data)
- return;
-@@ -754,7 +754,7 @@
- platform_device_register(&at91sam9263_ac97_device);
- }
- #else
--void __init at91_add_device_ac97(struct atmel_ac97_data *data) {}
-+void __init at91_add_device_ac97(struct ac97c_platform_data *data) {}
- #endif
-
-
-Index: linux-2.6.30/arch/arm/mach-at91/board-sam9263ek.c
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/board-sam9263ek.c 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/arch/arm/mach-at91/board-sam9263ek.c 2011-02-01 16:40:30.169008345 +0100
-@@ -155,7 +155,7 @@
- static struct at91_mmc_data __initdata ek_mmc_data = {
- .wire4 = 1,
- .det_pin = AT91_PIN_PE18,
-- .wp_pin = AT91_PIN_PE19,
-+// .wp_pin = ... not connected
- // .vcc_pin = ... not connected
- };
-
-@@ -365,9 +365,9 @@
-
- /*
- * AC97
-+ * reset_pin is not connected: NRST
- */
--static struct atmel_ac97_data ek_ac97_data = {
-- .reset_pin = AT91_PIN_PA13,
-+static struct ac97c_platform_data ek_ac97_data = {
- };
-
-
-Index: linux-2.6.30/drivers/input/touchscreen/atmel_tsadcc.c
-===================================================================
---- linux-2.6.30.orig/drivers/input/touchscreen/atmel_tsadcc.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/input/touchscreen/atmel_tsadcc.c 2011-02-01 16:40:30.169008345 +0100
-@@ -22,6 +22,8 @@
- #include <linux/clk.h>
- #include <linux/platform_device.h>
- #include <linux/io.h>
-+#include <mach/board.h>
-+#include <mach/cpu.h>
-
- /* Register definitions based on AT91SAM9RL64 preliminary draft datasheet */
-
-@@ -36,7 +38,9 @@
- #define ATMEL_TSADCC_LOWRES (1 << 4) /* Resolution selection */
- #define ATMEL_TSADCC_SLEEP (1 << 5) /* Sleep mode */
- #define ATMEL_TSADCC_PENDET (1 << 6) /* Pen Detect selection */
-+#define ATMEL_TSADCC_PRES (1 << 7) /* Pressure Measurement Selection */
- #define ATMEL_TSADCC_PRESCAL (0x3f << 8) /* Prescalar Rate Selection */
-+#define ATMEL_TSADCC_EPRESCAL (0xff << 8) /* Prescalar Rate Selection (Extended) */
- #define ATMEL_TSADCC_STARTUP (0x7f << 16) /* Start Up time */
- #define ATMEL_TSADCC_SHTIM (0xf << 24) /* Sample & Hold time */
- #define ATMEL_TSADCC_PENDBC (0xf << 28) /* Pen Detect debouncing time */
-@@ -84,7 +88,13 @@
- #define ATMEL_TSADCC_CDR4 0x40 /* Channel Data 4 */
- #define ATMEL_TSADCC_CDR5 0x44 /* Channel Data 5 */
-
--#define ADC_CLOCK 1000000
-+#define ATMEL_TSADCC_XPOS 0x50
-+#define ATMEL_TSADCC_Z1DAT 0x54
-+#define ATMEL_TSADCC_Z2DAT 0x58
-+
-+#define PRESCALER_VAL(x) ((x) >> 8)
-+
-+#define ADC_DEFAULT_CLOCK 100000
-
- struct atmel_tsadcc {
- struct input_dev *input;
-@@ -124,6 +134,7 @@
-
- input_report_key(input_dev, BTN_TOUCH, 0);
- ts_dev->bufferedmeasure = 0;
-+ input_report_abs(input_dev, ABS_PRESSURE, 0);
- input_sync(input_dev);
-
- } else if (status & ATMEL_TSADCC_PENCNT) {
-@@ -148,6 +159,7 @@
- input_report_abs(input_dev, ABS_X, ts_dev->prev_absx);
- input_report_abs(input_dev, ABS_Y, ts_dev->prev_absy);
- input_report_key(input_dev, BTN_TOUCH, 1);
-+ input_report_abs(input_dev, ABS_PRESSURE, 7500);
- input_sync(input_dev);
- } else
- ts_dev->bufferedmeasure = 1;
-@@ -172,6 +184,7 @@
- struct atmel_tsadcc *ts_dev;
- struct input_dev *input_dev;
- struct resource *res;
-+ struct at91_tsadcc_data *pdata = pdev->dev.platform_data;
- int err = 0;
- unsigned int prsc;
- unsigned int reg;
-@@ -242,11 +255,12 @@
- input_dev->phys = ts_dev->phys;
- input_dev->dev.parent = &pdev->dev;
-
-- input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
-- input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
--
-+ __set_bit(EV_ABS, input_dev->evbit);
- input_set_abs_params(input_dev, ABS_X, 0, 0x3FF, 0, 0);
- input_set_abs_params(input_dev, ABS_Y, 0, 0x3FF, 0, 0);
-+ input_set_abs_params(input_dev, ABS_PRESSURE, 0, 15000, 0, 0);
-+
-+ input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
-
- /* clk_enable() always returns 0, no need to check it */
- clk_enable(ts_dev->clk);
-@@ -254,19 +268,37 @@
- prsc = clk_get_rate(ts_dev->clk);
- dev_info(&pdev->dev, "Master clock is set at: %d Hz\n", prsc);
-
-- prsc = prsc / ADC_CLOCK / 2 - 1;
-+ if (!pdata)
-+ goto err_fail;
-+
-+ if (!pdata->adc_clock)
-+ pdata->adc_clock = ADC_DEFAULT_CLOCK;
-+
-+ prsc = (prsc / (2 * pdata->adc_clock)) - 1;
-+
-+ /* saturate if this value is too high */
-+ if (cpu_is_at91sam9rl()) {
-+ if (prsc > PRESCALER_VAL(ATMEL_TSADCC_PRESCAL))
-+ prsc = PRESCALER_VAL(ATMEL_TSADCC_PRESCAL);
-+ } else {
-+ if (prsc > PRESCALER_VAL(ATMEL_TSADCC_EPRESCAL))
-+ prsc = PRESCALER_VAL(ATMEL_TSADCC_EPRESCAL);
-+ }
-+
-+ dev_info(&pdev->dev, "Prescaler is set at: %d\n", prsc);
-
- reg = ATMEL_TSADCC_TSAMOD_TS_ONLY_MODE |
- ((0x00 << 5) & ATMEL_TSADCC_SLEEP) | /* Normal Mode */
- ((0x01 << 6) & ATMEL_TSADCC_PENDET) | /* Enable Pen Detect */
-- ((prsc << 8) & ATMEL_TSADCC_PRESCAL) | /* PRESCAL */
-- ((0x13 << 16) & ATMEL_TSADCC_STARTUP) | /* STARTUP */
-- ((0x0F << 28) & ATMEL_TSADCC_PENDBC); /* PENDBC */
-+ (prsc << 8) |
-+ ((0x26 << 16) & ATMEL_TSADCC_STARTUP) |
-+ ((pdata->pendet_debounce << 28) & ATMEL_TSADCC_PENDBC);
-
- atmel_tsadcc_write(ATMEL_TSADCC_CR, ATMEL_TSADCC_SWRST);
- atmel_tsadcc_write(ATMEL_TSADCC_MR, reg);
- atmel_tsadcc_write(ATMEL_TSADCC_TRGR, ATMEL_TSADCC_TRGMOD_NONE);
-- atmel_tsadcc_write(ATMEL_TSADCC_TSR, (0x3 << 24) & ATMEL_TSADCC_TSSHTIM);
-+ atmel_tsadcc_write(ATMEL_TSADCC_TSR,
-+ (pdata->ts_sample_hold_time << 24) & ATMEL_TSADCC_TSSHTIM);
-
- atmel_tsadcc_read(ATMEL_TSADCC_SR);
- atmel_tsadcc_write(ATMEL_TSADCC_IER, ATMEL_TSADCC_PENCNT);
-Index: linux-2.6.30/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/input/touchscreen/Kconfig 2011-02-01 16:40:18.000000000 +0100
-+++ linux-2.6.30/drivers/input/touchscreen/Kconfig 2011-02-01 16:40:30.165043750 +0100
-@@ -277,7 +277,7 @@
-
- config TOUCHSCREEN_ATMEL_TSADCC
- tristate "Atmel Touchscreen Interface"
-- depends on ARCH_AT91SAM9RL
-+ depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
- default y
- help
- Say Y here if you have a 4-wire touchscreen connected to the
-Index: linux-2.6.30/arch/arm/mach-at91/pm_slowclock.S
-===================================================================
---- linux-2.6.30.orig/arch/arm/mach-at91/pm_slowclock.S 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/mach-at91/pm_slowclock.S 2011-02-01 16:40:30.165043750 +0100
-@@ -18,7 +18,7 @@
-
- #ifdef CONFIG_ARCH_AT91RM9200
- #include <mach/at91rm9200_mc.h>
--#elif defined(CONFIG_ARCH_AT91CAP9)
-+#elif defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT91SAM9G45)
- #include <mach/at91cap9_ddrsdr.h>
- #else
- #include <mach/at91sam9_sdramc.h>
-@@ -34,6 +34,9 @@
- #warning Assuming EB1 SDRAM controller is *NOT* used
- #endif
-
-+#ifdef CONFIG_ARCH_AT91SAM9G45
-+#define AT91_DDRSDRC AT91_DDRSDRC1
-+#endif
- /*
- * When SLOWDOWN_MASTER_CLOCK is defined we will also slow down the Master
- * clock during suspend by adjusting its prescalar and divisor.
-@@ -127,7 +130,7 @@
- /* Put SDRAM in self-refresh mode */
- mov r3, #1
- str r3, [r2, #AT91_SDRAMC_SRR]
--#elif defined(CONFIG_ARCH_AT91CAP9)
-+#elif defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT91SAM9G45)
- /* Enable SDRAM self-refresh mode */
- ldr r3, [r2, #AT91_DDRSDRC_LPR - AT91_DDRSDRC]
- str r3, .saved_sam9_lpr
-@@ -239,7 +242,7 @@
-
- #ifdef CONFIG_ARCH_AT91RM9200
- /* Do nothing - self-refresh is automatically disabled. */
--#elif defined(CONFIG_ARCH_AT91CAP9)
-+#elif defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT91SAM9G45)
- /* Restore LPR on AT91CAP9 */
- ldr r3, .saved_sam9_lpr
- str r3, [r2, #AT91_DDRSDRC_LPR - AT91_DDRSDRC]
-@@ -271,7 +274,7 @@
- #ifdef CONFIG_ARCH_AT91RM9200
- .at91_va_base_sdramc:
- .word AT91_VA_BASE_SYS
--#elif defined(CONFIG_ARCH_AT91CAP9)
-+#elif defined(CONFIG_ARCH_AT91CAP9) || defined(CONFIG_ARCH_AT91SAM9G45)
- .at91_va_base_sdramc:
- .word AT91_VA_BASE_SYS + AT91_DDRSDRC
- #else
-Index: linux-2.6.30/arch/arm/tools/mach-types
-===================================================================
---- linux-2.6.30.orig/arch/arm/tools/mach-types 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/tools/mach-types 2011-02-01 16:40:30.169008345 +0100
-@@ -2245,3 +2245,4 @@
- omap3_wl_ff MACH_OMAP3_WL_FF OMAP3_WL_FF 2258
- simcom MACH_SIMCOM SIMCOM 2259
- mcwebio MACH_MCWEBIO MCWEBIO 2260
-+at91sam9g20ek_2mmc MACH_AT91SAM9G20EK_2MMC AT91SAM9G20EK_2MMC 2288
-Index: linux-2.6.30/drivers/misc/Kconfig
-===================================================================
---- linux-2.6.30.orig/drivers/misc/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/misc/Kconfig 2011-02-01 16:40:30.169008345 +0100
-@@ -15,7 +15,7 @@
-
- config ATMEL_PWM
- tristate "Atmel AT32/AT91 PWM support"
-- depends on AVR32 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_AT91CAP9
-+ depends on AVR32 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_AT91CAP9 || ARCH_AT91SAM9G45
- help
- This option enables device driver support for the PWM channels
- on certain Atmel processors. Pulse Width Modulation is used for
-Index: linux-2.6.30/arch/arm/configs/at91sam9263ek_defconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/configs/at91sam9263ek_defconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/configs/at91sam9263ek_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -1,17 +1,18 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.24-rc7
--# Tue Jan 8 22:12:20 2008
-+# Linux kernel version: 2.6.30
-+# Wed Sep 30 18:40:20 2009
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
- CONFIG_GENERIC_GPIO=y
--# CONFIG_GENERIC_TIME is not set
--# CONFIG_GENERIC_CLOCKEVENTS is not set
-+CONFIG_GENERIC_TIME=y
-+CONFIG_GENERIC_CLOCKEVENTS=y
- CONFIG_MMU=y
- # CONFIG_NO_IOPORT is not set
- 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
-@@ -21,7 +22,7 @@
- # CONFIG_ARCH_HAS_ILOG2_U64 is not set
- CONFIG_GENERIC_HWEIGHT=y
- CONFIG_GENERIC_CALIBRATE_DELAY=y
--CONFIG_ZONE_DMA=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
- CONFIG_VECTORS_BASE=0xffff0000
- CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-@@ -39,57 +40,82 @@
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- # CONFIG_TASKSTATS is not set
--# CONFIG_USER_NS is not set
--# CONFIG_PID_NS 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 is not set
- CONFIG_LOG_BUF_SHIFT=14
-+# CONFIG_GROUP_SCHED is not set
- # CONFIG_CGROUPS is not set
--CONFIG_FAIR_GROUP_SCHED=y
--CONFIG_FAIR_USER_SCHED=y
--# CONFIG_FAIR_CGROUP_SCHED is not set
- CONFIG_SYSFS_DEPRECATED=y
-+CONFIG_SYSFS_DEPRECATED_V2=y
- # CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
- CONFIG_BLK_DEV_INITRD=y
- CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
- CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
- # CONFIG_EMBEDDED is not set
- CONFIG_UID16=y
- CONFIG_SYSCTL_SYSCALL=y
- CONFIG_KALLSYMS=y
--# CONFIG_KALLSYMS_ALL is not set
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
- CONFIG_HOTPLUG=y
- CONFIG_PRINTK=y
- CONFIG_BUG=y
- CONFIG_ELF_CORE=y
- CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
--CONFIG_ANON_INODES=y
- CONFIG_EPOLL=y
- CONFIG_SIGNALFD=y
-+CONFIG_TIMERFD=y
- CONFIG_EVENTFD=y
- CONFIG_SHMEM=y
-+CONFIG_AIO=y
- CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# CONFIG_SLOW_WORK is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
- CONFIG_SLABINFO=y
- CONFIG_RT_MUTEXES=y
--# CONFIG_TINY_SHMEM is not set
- 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_KMOD=y
- CONFIG_BLOCK=y
- # CONFIG_LBD is not set
--# CONFIG_BLK_DEV_IO_TRACE is not set
--# CONFIG_LSF is not set
- # CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-
- #
- # IO Schedulers
-@@ -103,6 +129,7 @@
- # CONFIG_DEFAULT_CFQ is not set
- # CONFIG_DEFAULT_NOOP is not set
- CONFIG_DEFAULT_IOSCHED="anticipatory"
-+CONFIG_FREEZER=y
-
- #
- # System Type
-@@ -112,11 +139,10 @@
- # CONFIG_ARCH_REALVIEW is not set
- # CONFIG_ARCH_VERSATILE is not set
- CONFIG_ARCH_AT91=y
--# CONFIG_ARCH_CLPS7500 is not set
- # CONFIG_ARCH_CLPS711X is not set
--# CONFIG_ARCH_CO285 is not set
- # CONFIG_ARCH_EBSA110 is not set
- # CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
- # CONFIG_ARCH_FOOTBRIDGE is not set
- # CONFIG_ARCH_NETX is not set
- # CONFIG_ARCH_H720X is not set
-@@ -128,26 +154,26 @@
- # 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_KS8695 is not set
- # CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
- # CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
- # CONFIG_ARCH_PNX4008 is not set
- # CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
- # CONFIG_ARCH_OMAP is not set
--
--#
--# Boot options
--#
--
--#
--# Power management
--#
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-
- #
- # Atmel AT91 System-on-Chip
-@@ -155,15 +181,24 @@
- # CONFIG_ARCH_AT91RM9200 is not set
- # CONFIG_ARCH_AT91SAM9260 is not set
- # CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
- CONFIG_ARCH_AT91SAM9263=y
- # CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
- # CONFIG_ARCH_AT91X40 is not set
- CONFIG_AT91_PMC_UNIT=y
-+# CONFIG_MACH_NEOCORE926 is not set
-
- #
- # AT91SAM9263 Board Type
- #
- CONFIG_MACH_AT91SAM9263EK=y
-+# CONFIG_MACH_USB_A9263 is not set
-+# CONFIG_MACH_CSB737 is not set
-+# CONFIG_MACH_TOTEMNOVA is not set
-
- #
- # AT91 Board Options
-@@ -174,9 +209,16 @@
- #
- # AT91 Feature Selections
- #
--# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
--# CONFIG_ATMEL_TCLIB is not set
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+# CONFIG_AT91_SLOW_CLOCK is not set
- CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-
- #
- # Processor Type
-@@ -185,6 +227,7 @@
- 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
-@@ -194,7 +237,7 @@
- #
- # Processor Features
- #
--# CONFIG_ARM_THUMB is not set
-+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
-@@ -211,25 +254,37 @@
- #
- # Kernel Features
- #
--# CONFIG_TICK_ONESHOT is not set
-+# 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 is not set
- CONFIG_HZ=100
--# CONFIG_AEABI is not set
--# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_SPARSEMEM_STATIC is not set
--# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-+CONFIG_PAGEFLAGS_EXTENDED=y
- CONFIG_SPLIT_PTLOCK_CPUS=4096
--# CONFIG_RESOURCES_64BIT is not set
--CONFIG_ZONE_DMA_FLAG=1
--CONFIG_BOUNCE=y
-+# CONFIG_PHYS_ADDR_T_64BIT is not set
-+CONFIG_ZONE_DMA_FLAG=0
- CONFIG_VIRT_TO_BUS=y
--# CONFIG_LEDS is not set
-+CONFIG_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
- CONFIG_ALIGNMENT_TRAP=y
-
- #
-@@ -242,6 +297,11 @@
- # CONFIG_KEXEC is not set
-
- #
-+# CPU Power Management
-+#
-+# CONFIG_CPU_IDLE is not set
-+
-+#
- # Floating point emulation
- #
-
-@@ -257,19 +317,21 @@
- # 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
--# CONFIG_ARTHUR is not set
-
- #
- # Power management options
- #
--# CONFIG_PM is not set
--CONFIG_SUSPEND_UP_POSSIBLE=y
--
--#
--# Networking
--#
-+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
-
- #
-@@ -280,15 +342,13 @@
- CONFIG_UNIX=y
- # CONFIG_NET_KEY is not set
- CONFIG_INET=y
--# CONFIG_IP_MULTICAST is not set
-+CONFIG_IP_MULTICAST=y
- # CONFIG_IP_ADVANCED_ROUTER is not set
- CONFIG_IP_FIB_HASH=y
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--CONFIG_IP_PNP_RARP=y
-+# CONFIG_IP_PNP is not set
- # CONFIG_NET_IPIP is not set
- # CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
- # CONFIG_ARPD is not set
- # CONFIG_SYN_COOKIES is not set
- # CONFIG_INET_AH is not set
-@@ -306,8 +366,6 @@
- CONFIG_DEFAULT_TCP_CONG="cubic"
- # CONFIG_TCP_MD5SIG is not set
- # CONFIG_IPV6 is not set
--# CONFIG_INET6_XFRM_TUNNEL is not set
--# CONFIG_INET6_TUNNEL is not set
- # CONFIG_NETWORK_SECMARK is not set
- # CONFIG_NETFILTER is not set
- # CONFIG_IP_DCCP is not set
-@@ -315,6 +373,7 @@
- # 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
-@@ -324,24 +383,40 @@
- # CONFIG_LAPB is not set
- # CONFIG_ECONET is not set
- # CONFIG_WAN_ROUTER is not set
-+# CONFIG_PHONET 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 is not set
- # CONFIG_AF_RXRPC is not set
--
--#
--# Wireless
--#
--# CONFIG_CFG80211 is not set
--# CONFIG_WIRELESS_EXT is not set
--# CONFIG_MAC80211 is not set
--# CONFIG_IEEE80211 is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# CONFIG_WIMAX is not set
- # CONFIG_RFKILL is not set
- # CONFIG_NET_9P is not set
-
-@@ -355,18 +430,20 @@
- CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- CONFIG_STANDALONE=y
- CONFIG_PREVENT_FIRMWARE_BUILD=y
--# CONFIG_FW_LOADER is not set
--# CONFIG_DEBUG_DRIVER is not set
--# CONFIG_DEBUG_DEVRES is not set
-+CONFIG_FW_LOADER=y
-+CONFIG_FIRMWARE_IN_KERNEL=y
-+CONFIG_EXTRA_FIRMWARE=""
- # 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 is not set
- # CONFIG_MTD_REDBOOT_PARTS is not set
- CONFIG_MTD_CMDLINE_PARTS=y
- # CONFIG_MTD_AFS_PARTS is not set
-+# CONFIG_MTD_AR7_PARTS is not set
-
- #
- # User Modules And Translation Layers
-@@ -410,6 +487,8 @@
- # Self-contained MTD device drivers
- #
- CONFIG_MTD_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
- # CONFIG_MTD_M25P80 is not set
- # CONFIG_MTD_SLRAM is not set
- # CONFIG_MTD_PHRAM is not set
-@@ -426,15 +505,24 @@
- # CONFIG_MTD_NAND_VERIFY_WRITE is not set
- # 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
- # CONFIG_MTD_NAND_NANDSIM is not set
- # CONFIG_MTD_NAND_PLATFORM is not set
- # CONFIG_MTD_ALAUDA is not set
- # CONFIG_MTD_ONENAND is not set
-
- #
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
- # UBI - Unsorted block images
- #
- # CONFIG_MTD_UBI is not set
-@@ -446,14 +534,30 @@
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_UB is not set
- CONFIG_BLK_DEV_RAM=y
--CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_COUNT=4
- CONFIG_BLK_DEV_RAM_SIZE=8192
--CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-+# CONFIG_BLK_DEV_XIP is not set
- # CONFIG_CDROM_PKTCDVD is not set
- # CONFIG_ATA_OVER_ETH is not set
- CONFIG_MISC_DEVICES=y
-+CONFIG_ATMEL_PWM=y
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+# CONFIG_ICS932S401 is not set
-+# CONFIG_ATMEL_SSC 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_AT25 is not set
- # CONFIG_EEPROM_93CX6 is not set
--CONFIG_ATMEL_SSC=y
-+CONFIG_HAVE_IDE=y
-+# CONFIG_IDE is not set
-
- #
- # SCSI device support
-@@ -492,13 +596,13 @@
- # 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_SCSI_DEBUG is not set
-+# CONFIG_SCSI_LOWLEVEL 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_NETDEVICES_MULTIQUEUE is not set
-+# CONFIG_COMPAT_NET_DEV_OPS is not set
- # CONFIG_DUMMY is not set
- # CONFIG_BONDING is not set
- # CONFIG_MACVLAN is not set
-@@ -511,7 +615,7 @@
- # MII PHY device drivers
- #
- # CONFIG_MARVELL_PHY is not set
--# CONFIG_DAVICOM_PHY is not set
-+CONFIG_DAVICOM_PHY=y
- # CONFIG_QSEMI_PHY is not set
- # CONFIG_LXT_PHY is not set
- # CONFIG_CICADA_PHY is not set
-@@ -519,27 +623,72 @@
- # CONFIG_SMSC_PHY is not set
- # CONFIG_BROADCOM_PHY is not set
- # CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
- # CONFIG_FIXED_PHY is not set
- # CONFIG_MDIO_BITBANG is not set
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=y
- CONFIG_MACB=y
-+CONFIG_MACB_TX_SRAM=y
- # CONFIG_AX88796 is not set
- # CONFIG_SMC91X is not set
- # CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000=y
--CONFIG_NETDEV_10000=y
-+# CONFIG_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-
- #
- # Wireless LAN
- #
- # CONFIG_WLAN_PRE80211 is not set
--# CONFIG_WLAN_80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+CONFIG_LIBERTAS_SPI=m
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-
- #
- # USB Network Adapters
-@@ -552,7 +701,6 @@
- # CONFIG_WAN is not set
- # CONFIG_PPP is not set
- # CONFIG_SLIP is not set
--# CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
- # CONFIG_NETPOLL is not set
- # CONFIG_NET_POLL_CONTROLLER is not set
-@@ -563,15 +711,15 @@
- #
- CONFIG_INPUT=y
- # CONFIG_INPUT_FF_MEMLESS is not set
--# CONFIG_INPUT_POLLDEV is not set
-+CONFIG_INPUT_POLLDEV=m
-
- #
- # Userland interfaces
- #
- CONFIG_INPUT_MOUSEDEV=y
- # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
--CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
--CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
- # CONFIG_INPUT_JOYDEV is not set
- CONFIG_INPUT_EVDEV=y
- # CONFIG_INPUT_EVBUG is not set
-@@ -592,16 +740,24 @@
- # CONFIG_INPUT_TABLET is not set
- CONFIG_INPUT_TOUCHSCREEN=y
- CONFIG_TOUCHSCREEN_ADS7846=y
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
- # CONFIG_TOUCHSCREEN_FUJITSU is not set
- # CONFIG_TOUCHSCREEN_GUNZE is not set
- # CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
- # CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
- # CONFIG_TOUCHSCREEN_MK712 is not set
- # CONFIG_TOUCHSCREEN_PENMOUNT is not set
- # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
- # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
--# CONFIG_TOUCHSCREEN_UCB1400 is not set
-+# CONFIG_TOUCHSCREEN_WM97XX is not set
- # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-+# CONFIG_TOUCHSCREEN_TSC2007 is not set
- # CONFIG_INPUT_MISC is not set
-
- #
-@@ -614,9 +770,11 @@
- # 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
-
- #
-@@ -629,63 +787,65 @@
- #
- CONFIG_SERIAL_ATMEL=y
- CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
- # CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
- CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
- CONFIG_LEGACY_PTYS=y
--CONFIG_LEGACY_PTY_COUNT=256
-+CONFIG_LEGACY_PTY_COUNT=4
- # CONFIG_IPMI_HANDLER is not set
- CONFIG_HW_RANDOM=y
--# CONFIG_NVRAM is not set
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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_CHARDEV is not set
-+CONFIG_I2C_HELPER_AUTO=y
-+CONFIG_I2C_ALGOBIT=y
-
- #
--# I2C Algorithms
-+# I2C Hardware Bus support
- #
--CONFIG_I2C_ALGOBIT=y
--# CONFIG_I2C_ALGOPCF is not set
--# CONFIG_I2C_ALGOPCA is not set
-
- #
--# 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_PARPORT_LIGHT 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
--# CONFIG_I2C_STUB is not set
- # CONFIG_I2C_TINY_USB is not set
--# CONFIG_I2C_PCA 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_SENSORS_DS1337 is not set
--# CONFIG_SENSORS_DS1374 is not set
- # CONFIG_DS1682 is not set
--# CONFIG_EEPROM_LEGACY is not set
- # CONFIG_SENSORS_PCF8574 is not set
-+# CONFIG_PCF8575 is not set
- # CONFIG_SENSORS_PCA9539 is not set
--# CONFIG_SENSORS_PCF8591 is not set
- # CONFIG_SENSORS_MAX6875 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
--
--#
--# SPI support
--#
- CONFIG_SPI=y
--# CONFIG_SPI_DEBUG is not set
- CONFIG_SPI_MASTER=y
-
- #
-@@ -693,46 +853,84 @@
- #
- CONFIG_SPI_ATMEL=y
- # CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-
- #
- # SPI Protocol Masters
- #
--# CONFIG_EEPROM_AT25 is not set
- # CONFIG_SPI_SPIDEV is not set
- # CONFIG_SPI_TLE62X0 is not set
--# CONFIG_W1 is not set
--# CONFIG_POWER_SUPPLY is not set
--# CONFIG_HWMON is not set
--CONFIG_WATCHDOG=y
--CONFIG_WATCHDOG_NOWAYOUT=y
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-
- #
--# Watchdog Device Drivers
-+# Memory mapped GPIO expanders:
- #
--# CONFIG_SOFT_WATCHDOG is not set
--CONFIG_AT91SAM9X_WATCHDOG=y
-
- #
--# USB-based Watchdog Cards
-+# I2C GPIO expanders:
- #
--# CONFIG_USBPCWATCHDOG is not set
-+# CONFIG_GPIO_MAX732X is not set
-+# CONFIG_GPIO_PCA953X is not set
-+# CONFIG_GPIO_PCF857X is not set
-
- #
--# Sonics Silicon Backplane
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
- #
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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_UCB1400_CORE 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
-
- #
- # Multimedia devices
- #
-+
-+#
-+# Multimedia core support
-+#
- # CONFIG_VIDEO_DEV is not set
- # CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
- # CONFIG_DAB is not set
-
- #
-@@ -743,6 +941,7 @@
- CONFIG_FB=y
- # CONFIG_FIRMWARE_EDID is not set
- # CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
- CONFIG_FB_CFB_FILLRECT=y
- CONFIG_FB_CFB_COPYAREA=y
- CONFIG_FB_CFB_IMAGEBLIT=y
-@@ -750,8 +949,8 @@
- # CONFIG_FB_SYS_FILLRECT is not set
- # CONFIG_FB_SYS_COPYAREA is not set
- # CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
- # CONFIG_FB_SYS_FOPS is not set
--CONFIG_FB_DEFERRED_IO=y
- # CONFIG_FB_SVGALIB is not set
- # CONFIG_FB_MACMODES is not set
- # CONFIG_FB_BACKLIGHT is not set
-@@ -765,7 +964,15 @@
- # CONFIG_FB_S1D13XXX is not set
- CONFIG_FB_ATMEL=y
- # CONFIG_FB_VIRTUAL is not set
--# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_ATMEL_PWM is not set
-+# CONFIG_BACKLIGHT_GENERIC is not set
-
- #
- # Display device support
-@@ -779,11 +986,41 @@
- CONFIG_DUMMY_CONSOLE=y
- # CONFIG_FRAMEBUFFER_CONSOLE is not set
- # CONFIG_LOGO is not set
--
--#
--# Sound
--#
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+CONFIG_SND_VMASTER=y
-+CONFIG_SND_AC97_CODEC=y
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+CONFIG_SND_ATMEL_AC97C=y
-+# CONFIG_SND_SPI is not set
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_AC97_BUS=y
- CONFIG_HID_SUPPORT=y
- CONFIG_HID=y
- # CONFIG_HID_DEBUG is not set
-@@ -793,57 +1030,68 @@
- # USB Input Devices
- #
- # CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-
- #
--# USB HID Boot Protocol drivers
-+# Special HID drivers
- #
--# CONFIG_USB_KBD is not set
--# CONFIG_USB_MOUSE is not set
- CONFIG_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
- # CONFIG_USB_ARCH_HAS_EHCI is not set
- CONFIG_USB=y
- # CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
- #
- # Miscellaneous USB options
- #
- CONFIG_USB_DEVICEFS=y
--CONFIG_USB_DEVICE_CLASS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
- # CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-
- #
- # USB Host Controller Drivers
- #
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
- # CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
- CONFIG_USB_OHCI_HCD=y
- # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
- # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
- CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_SL811_HCD is not set
- # CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-
- #
- # USB Device Class drivers
- #
- # CONFIG_USB_ACM is not set
- # CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
- #
-
- #
--# may also be needed; see USB_STORAGE Help for more information
-+# also be needed; see USB_STORAGE Help for more info
- #
- CONFIG_USB_STORAGE=y
- # CONFIG_USB_STORAGE_DEBUG is not set
- # CONFIG_USB_STORAGE_DATAFAB is not set
- # CONFIG_USB_STORAGE_FREECOM is not set
- # CONFIG_USB_STORAGE_ISD200 is not set
--# CONFIG_USB_STORAGE_DPCM is not set
- # CONFIG_USB_STORAGE_USBAT is not set
- # CONFIG_USB_STORAGE_SDDR09 is not set
- # CONFIG_USB_STORAGE_SDDR55 is not set
-@@ -851,6 +1099,7 @@
- # CONFIG_USB_STORAGE_ALAUDA is not set
- # CONFIG_USB_STORAGE_ONETOUCH is not set
- # CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
- # CONFIG_USB_LIBUSUAL is not set
-
- #
-@@ -858,15 +1107,10 @@
- #
- # CONFIG_USB_MDC800 is not set
- # CONFIG_USB_MICROTEK is not set
--CONFIG_USB_MON=y
-
- #
- # USB port drivers
- #
--
--#
--# USB Serial Converter support
--#
- # CONFIG_USB_SERIAL is not set
-
- #
-@@ -875,7 +1119,7 @@
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
- # CONFIG_USB_ADUTUX is not set
--# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_SEVSEG is not set
- # CONFIG_USB_RIO500 is not set
- # CONFIG_USB_LEGOTOWER is not set
- # CONFIG_USB_LCD is not set
-@@ -883,7 +1127,6 @@
- # CONFIG_USB_LED is not set
- # CONFIG_USB_CYPRESS_CY7C63 is not set
- # CONFIG_USB_CYTHERM is not set
--# CONFIG_USB_PHIDGET is not set
- # CONFIG_USB_IDMOUSE is not set
- # CONFIG_USB_FTDI_ELAN is not set
- # CONFIG_USB_APPLEDISPLAY is not set
-@@ -891,56 +1134,95 @@
- # CONFIG_USB_TRANCEVIBRATOR is not set
- # CONFIG_USB_IOWARRIOR is not set
- # CONFIG_USB_TEST is not set
--
--#
--# USB DSL modem support
--#
--
--#
--# USB Gadget Support
--#
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
- CONFIG_USB_GADGET=y
--# CONFIG_USB_GADGET_DEBUG is not set
- # CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
- CONFIG_USB_GADGET_SELECTED=y
--# CONFIG_USB_GADGET_AMD5536UDC is not set
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
- # CONFIG_USB_GADGET_ATMEL_USBA is not set
- # CONFIG_USB_GADGET_FSL_USB2 is not set
--# CONFIG_USB_GADGET_NET2280 is not set
--# CONFIG_USB_GADGET_PXA2XX is not set
--# CONFIG_USB_GADGET_M66592 is not set
--# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_LH7A40X is not set
- # CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
- # CONFIG_USB_GADGET_S3C2410 is not set
--CONFIG_USB_GADGET_AT91=y
--CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
- # CONFIG_USB_GADGET_DUALSPEED is not set
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ETH is not set
--CONFIG_USB_GADGETFS=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
- CONFIG_USB_FILE_STORAGE=m
- # CONFIG_USB_FILE_STORAGE_TEST is not set
- CONFIG_USB_G_SERIAL=m
- # CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
- CONFIG_MMC=y
- # CONFIG_MMC_DEBUG is not set
- # CONFIG_MMC_UNSAFE_RESUME is not set
-
- #
--# MMC/SD Card Drivers
-+# MMC/SD/SDIO Card Drivers
- #
- CONFIG_MMC_BLOCK=y
- CONFIG_MMC_BLOCK_BOUNCE=y
--# CONFIG_SDIO_UART is not set
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-
- #
--# MMC/SD Host Controller Drivers
-+# MMC/SD/SDIO Host Controller Drivers
- #
--CONFIG_MMC_AT91=m
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
- # CONFIG_MMC_SPI is not set
--# CONFIG_NEW_LEDS is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_ATMEL_PWM=y
-+# CONFIG_LEDS_PCA9532 is not set
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP5521 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_BD2802 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
- CONFIG_RTC_LIB=y
- CONFIG_RTC_CLASS=y
- CONFIG_RTC_HCTOSYS=y
-@@ -969,28 +1251,47 @@
- # 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
-
- #
- # SPI RTC drivers
- #
--# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
- # CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-
- #
- # 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_STK17TA8 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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
-@@ -999,24 +1300,28 @@
- # CONFIG_EXT2_FS_XATTR is not set
- # CONFIG_EXT2_FS_XIP is not set
- # CONFIG_EXT3_FS is not set
--# CONFIG_EXT4DEV_FS is not set
-+# CONFIG_EXT4_FS is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
- # CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
- # CONFIG_XFS_FS is not set
--# CONFIG_GFS2_FS is not set
- # CONFIG_OCFS2_FS is not set
--# CONFIG_MINIX_FS is not set
--# CONFIG_ROMFS_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_DNOTIFY=y
- CONFIG_INOTIFY=y
- CONFIG_INOTIFY_USER=y
- # CONFIG_QUOTA is not set
--CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
- # CONFIG_FUSE_FS is not set
-
- #
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
- # CD-ROM/DVD Filesystems
- #
- # CONFIG_ISO9660_FS is not set
-@@ -1026,7 +1331,7 @@
- # DOS/FAT/NT Filesystems
- #
- CONFIG_FAT_FS=y
--# CONFIG_MSDOS_FS is not set
-+CONFIG_MSDOS_FS=y
- CONFIG_VFAT_FS=y
- CONFIG_FAT_DEFAULT_CODEPAGE=437
- CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-@@ -1037,15 +1342,13 @@
- #
- 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
--
--#
--# Miscellaneous filesystems
--#
-+CONFIG_MISC_FILESYSTEMS=y
- # CONFIG_ADFS_FS is not set
- # CONFIG_AFFS_FS is not set
- # CONFIG_HFS_FS is not set
-@@ -1057,30 +1360,36 @@
- 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_SUMMARY=y
- # 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=y
-+CONFIG_CRAMFS=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
- # 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 is not set
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- # CONFIG_NFS_V4 is not set
--# CONFIG_NFS_DIRECTIO is not set
- # CONFIG_NFSD is not set
--CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
- CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
--# CONFIG_SUNRPC_BIND34 is not set
- # CONFIG_RPCSEC_GSS_KRB5 is not set
- # CONFIG_RPCSEC_GSS_SPKM3 is not set
- # CONFIG_SMB_FS is not set
-@@ -1130,14 +1439,11 @@
- # 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 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_NLS_UTF8=y
- # CONFIG_DLM is not set
--CONFIG_INSTRUMENTATION=y
--# CONFIG_PROFILING is not set
--# CONFIG_MARKERS is not set
-
- #
- # Kernel hacking
-@@ -1145,64 +1451,161 @@
- # CONFIG_PRINTK_TIME is not set
- CONFIG_ENABLE_WARN_DEPRECATED=y
- CONFIG_ENABLE_MUST_CHECK=y
-+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_SCHED_DEBUG=y
--# CONFIG_SCHEDSTATS is not set
--# CONFIG_TIMER_STATS is not set
--# CONFIG_DEBUG_SLAB 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_KERNEL is not set
- CONFIG_DEBUG_BUGVERBOSE=y
--# CONFIG_DEBUG_INFO is not set
--# CONFIG_DEBUG_VM is not set
--# CONFIG_DEBUG_LIST is not set
--# CONFIG_DEBUG_SG is not set
--CONFIG_FRAME_POINTER=y
--CONFIG_FORCED_INLINING=y
--# CONFIG_BOOT_PRINTK_DELAY is not set
--# CONFIG_RCU_TORTURE_TEST is not set
--# CONFIG_FAULT_INJECTION is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
- CONFIG_DEBUG_USER=y
--# CONFIG_DEBUG_ERRORS is not set
--CONFIG_DEBUG_LL=y
--# CONFIG_DEBUG_ICEDCC 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 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-
- #
- # Library routines
- #
- CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
- # CONFIG_CRC_CCITT is not set
- # CONFIG_CRC16 is not set
--# CONFIG_CRC_ITU_T is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
- CONFIG_CRC32=y
- # CONFIG_CRC7 is not set
- # CONFIG_LIBCRC32C is not set
- CONFIG_ZLIB_INFLATE=y
- CONFIG_ZLIB_DEFLATE=y
--CONFIG_PLIST=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
- CONFIG_HAS_IOMEM=y
- CONFIG_HAS_IOPORT=y
- CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9g45ekes_defconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/configs/at91sam9g45ekes_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -0,0 +1,1617 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30
-+# Mon Oct 12 17:39:21 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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+CONFIG_BLK_DEV_INITRD=y
-+CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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 is not set
-+
-+#
-+# 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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+# CONFIG_ARCH_AT91SAM9260 is not set
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+CONFIG_ARCH_AT91SAM9G45=y
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9G45 Board Type
-+#
-+CONFIG_MACH_AT91SAM9G45EKES=y
-+
-+#
-+# AT91 Board Options
-+#
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x71100000,25165824 root=/dev/ram0 rw"
-+# 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 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# 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_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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=4
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+# CONFIG_ATMEL_PWM is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+# CONFIG_ICS932S401 is not set
-+# CONFIG_ATMEL_SSC 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_AT25 is not set
-+# CONFIG_EEPROM_LEGACY is not set
-+CONFIG_EEPROM_93CX6=m
-+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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 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_COMPAT_NET_DEV_OPS=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+CONFIG_DAVICOM_PHY=y
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+CONFIG_MII=y
-+CONFIG_MACB=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+# CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+CONFIG_LIBERTAS_SPI=m
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+CONFIG_INPUT_POLLDEV=m
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
-+CONFIG_INPUT_JOYDEV=y
-+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=y
-+# CONFIG_INPUT_MOUSE is not set
-+# CONFIG_INPUT_JOYSTICK is not set
-+# CONFIG_INPUT_TABLET is not set
-+CONFIG_INPUT_TOUCHSCREEN=y
-+# CONFIG_TOUCHSCREEN_ADS7846 is not set
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_FUJITSU is not set
-+# CONFIG_TOUCHSCREEN_GUNZE is not set
-+# CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-+# CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
-+# CONFIG_TOUCHSCREEN_MK712 is not set
-+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-+CONFIG_TOUCHSCREEN_ATMEL_TSADCC=y
-+# CONFIG_TOUCHSCREEN_WM97XX is not set
-+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-+# CONFIG_TOUCHSCREEN_TSC2007 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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 is not set
-+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
-+# CONFIG_I2C_TINY_USB 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_MAX6875 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=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+# CONFIG_SPI_SPIDEV is not set
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# 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_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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_UCB1400_CORE 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
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB is not set
-+
-+#
-+# Graphics support
-+#
-+# CONFIG_VGASTATE is not set
-+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-+# CONFIG_FB_SYS_FILLRECT is not set
-+# CONFIG_FB_SYS_COPYAREA is not set
-+# CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
-+# CONFIG_FB_SYS_FOPS is not set
-+# CONFIG_FB_SVGALIB is not set
-+# CONFIG_FB_MACMODES is not set
-+# CONFIG_FB_BACKLIGHT is not set
-+# CONFIG_FB_MODE_HELPERS is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_S1D15605 is not set
-+# CONFIG_FB_S1D13XXX is not set
-+CONFIG_FB_ATMEL=y
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_GENERIC 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_FRAMEBUFFER_CONSOLE is not set
-+# CONFIG_LOGO is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+CONFIG_SND_VMASTER=y
-+CONFIG_SND_AC97_CODEC=y
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+CONFIG_SND_ATMEL_AC97C=y
-+# CONFIG_SND_SPI is not set
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_AC97_BUS=y
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+# CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+CONFIG_USB_ARCH_HAS_EHCI=y
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+CONFIG_USB_EHCI_HCD=y
-+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_SISUSBVGA is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+# CONFIG_USB_GADGET_AT91 is not set
-+CONFIG_USB_GADGET_ATMEL_USBA=y
-+CONFIG_USB_ATMEL_USBA=y
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+CONFIG_USB_GADGET_DUALSPEED=y
-+CONFIG_USB_ZERO=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
-+# CONFIG_USB_FILE_STORAGE is not set
-+CONFIG_USB_G_SERIAL=m
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+# CONFIG_MMC_BLOCK_BOUNCE is not set
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+# CONFIG_MMC_AT91 is not set
-+CONFIG_MMC_ATMELMCI=y
-+CONFIG_MMC_ATMELMCI_DMA=y
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+# CONFIG_LEDS_PCA9532 is not set
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP5521 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_BD2802 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+CONFIG_DMADEVICES=y
-+
-+#
-+# DMA Devices
-+#
-+CONFIG_AT_HDMAC=y
-+CONFIG_DMA_ENGINE=y
-+
-+#
-+# DMA Clients
-+#
-+# CONFIG_NET_DMA is not set
-+# CONFIG_ASYNC_TX_DMA is not set
-+CONFIG_DMATEST=m
-+# 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 is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+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 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 is not set
-+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=y
-+# 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_JFFS2_CMODE_NONE is not set
-+# CONFIG_JFFS2_CMODE_PRIORITY is not set
-+# CONFIG_JFFS2_CMODE_SIZE is not set
-+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-+CONFIG_CRAMFS=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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 is not set
-+# 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=y
-+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 is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
-+CONFIG_DEBUG_USER=y
-+
-+#
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
-+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_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9g20ek_2mmc_defconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/configs/at91sam9g20ek_2mmc_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -0,0 +1,1557 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30
-+# Mon Oct 12 18:24:05 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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+CONFIG_BLK_DEV_INITRD=y
-+CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+# CONFIG_ARCH_AT91SAM9260 is not set
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+CONFIG_ARCH_AT91SAM9G20=y
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9G20 Board Type
-+#
-+# CONFIG_MACH_AT91SAM9G20EK is not set
-+CONFIG_MACH_AT91SAM9G20EK_2MMC=y
-+# CONFIG_MACH_USB_A9G20 is not set
-+# CONFIG_MACH_QIL_A9G20 is not set
-+# CONFIG_MACH_SBC35_A9G20 is not set
-+
-+#
-+# AT91 Board Options
-+#
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+# CONFIG_AT91_SLOW_CLOCK is not set
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
-+# 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# 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_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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=4
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+# CONFIG_ICS932S401 is not set
-+CONFIG_ATMEL_SSC=y
-+# 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_AT25 is not set
-+# CONFIG_EEPROM_LEGACY is not set
-+CONFIG_EEPROM_93CX6=m
-+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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 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_COMPAT_NET_DEV_OPS=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+CONFIG_DAVICOM_PHY=y
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+CONFIG_MII=y
-+CONFIG_MACB=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+# CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+CONFIG_LIBERTAS_SPI=m
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+CONFIG_INPUT_POLLDEV=m
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-+# 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=y
-+# CONFIG_INPUT_MOUSE 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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=m
-+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
-+# CONFIG_I2C_TINY_USB 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_MAX6875 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=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# 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_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB 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=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_JACK=y
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+CONFIG_SND_SEQUENCER_OSS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+# CONFIG_SND_ATMEL_AC97C is not set
-+# CONFIG_SND_SPI is not set
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+CONFIG_SND_SOC=y
-+CONFIG_SND_ATMEL_SOC=y
-+CONFIG_SND_ATMEL_SOC_SSC=y
-+CONFIG_SND_AT91_SOC_SAM9G20_WM8731=y
-+CONFIG_SND_SOC_I2C_AND_SPI=y
-+# CONFIG_SND_SOC_ALL_CODECS is not set
-+CONFIG_SND_SOC_WM8731=y
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+# CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+# CONFIG_USB_ARCH_HAS_EHCI is not set
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_ATMEL_USBA is not set
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+# CONFIG_USB_GADGET_DUALSPEED is not set
-+CONFIG_USB_ZERO=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
-+CONFIG_USB_FILE_STORAGE=m
-+# CONFIG_USB_FILE_STORAGE_TEST is not set
-+CONFIG_USB_G_SERIAL=m
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+# CONFIG_LEDS_PCA9532 is not set
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP5521 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_BD2802 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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 is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+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 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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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 is not set
-+# 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=y
-+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 is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
-+CONFIG_DEBUG_USER=y
-+
-+#
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
-+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_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9g20ek_defconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/configs/at91sam9g20ek_defconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/configs/at91sam9g20ek_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -1,7 +1,7 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.24
--# Tue Jun 10 15:51:52 2008
-+# Linux kernel version: 2.6.30
-+# Mon Oct 12 18:24:05 2009
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-@@ -12,6 +12,7 @@
- # CONFIG_NO_IOPORT is not set
- 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
-@@ -21,7 +22,7 @@
- # CONFIG_ARCH_HAS_ILOG2_U64 is not set
- CONFIG_GENERIC_HWEIGHT=y
- CONFIG_GENERIC_CALIBRATE_DELAY=y
--CONFIG_ZONE_DMA=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
- CONFIG_VECTORS_BASE=0xffff0000
- CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-@@ -39,54 +40,82 @@
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- # CONFIG_TASKSTATS is not set
--# CONFIG_USER_NS is not set
--# CONFIG_PID_NS 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 is not set
- CONFIG_LOG_BUF_SHIFT=14
-+# CONFIG_GROUP_SCHED is not set
- # CONFIG_CGROUPS is not set
--# CONFIG_FAIR_GROUP_SCHED is not set
- CONFIG_SYSFS_DEPRECATED=y
-+CONFIG_SYSFS_DEPRECATED_V2=y
- # CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
- CONFIG_BLK_DEV_INITRD=y
- CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
- CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
- # CONFIG_EMBEDDED is not set
- CONFIG_UID16=y
- CONFIG_SYSCTL_SYSCALL=y
- CONFIG_KALLSYMS=y
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
- CONFIG_HOTPLUG=y
- CONFIG_PRINTK=y
- CONFIG_BUG=y
- CONFIG_ELF_CORE=y
- CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
--CONFIG_ANON_INODES=y
- CONFIG_EPOLL=y
- CONFIG_SIGNALFD=y
-+CONFIG_TIMERFD=y
- CONFIG_EVENTFD=y
- CONFIG_SHMEM=y
-+CONFIG_AIO=y
- CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# CONFIG_SLOW_WORK is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
- CONFIG_SLABINFO=y
- CONFIG_RT_MUTEXES=y
--# CONFIG_TINY_SHMEM is not set
- 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_KMOD=y
- CONFIG_BLOCK=y
- # CONFIG_LBD is not set
--# CONFIG_BLK_DEV_IO_TRACE is not set
--# CONFIG_LSF is not set
- # CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-
- #
- # IO Schedulers
-@@ -100,6 +129,7 @@
- # CONFIG_DEFAULT_CFQ is not set
- # CONFIG_DEFAULT_NOOP is not set
- CONFIG_DEFAULT_IOSCHED="anticipatory"
-+CONFIG_FREEZER=y
-
- #
- # System Type
-@@ -109,11 +139,10 @@
- # CONFIG_ARCH_REALVIEW is not set
- # CONFIG_ARCH_VERSATILE is not set
- CONFIG_ARCH_AT91=y
--# CONFIG_ARCH_CLPS7500 is not set
- # CONFIG_ARCH_CLPS711X is not set
--# CONFIG_ARCH_CO285 is not set
- # CONFIG_ARCH_EBSA110 is not set
- # CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
- # CONFIG_ARCH_FOOTBRIDGE is not set
- # CONFIG_ARCH_NETX is not set
- # CONFIG_ARCH_H720X is not set
-@@ -125,26 +154,26 @@
- # 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_KS8695 is not set
- # CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
- # CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
- # CONFIG_ARCH_PNX4008 is not set
- # CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
- # CONFIG_ARCH_OMAP is not set
--
--#
--# Boot options
--#
--
--#
--# Power management
--#
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-
- #
- # Atmel AT91 System-on-Chip
-@@ -152,10 +181,13 @@
- # CONFIG_ARCH_AT91RM9200 is not set
- # CONFIG_ARCH_AT91SAM9260 is not set
- # CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
- # CONFIG_ARCH_AT91SAM9263 is not set
- # CONFIG_ARCH_AT91SAM9RL is not set
- CONFIG_ARCH_AT91SAM9G20=y
-+# CONFIG_ARCH_AT91SAM9G45 is not set
- # CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
- # CONFIG_ARCH_AT91X40 is not set
- CONFIG_AT91_PMC_UNIT=y
-
-@@ -163,6 +195,10 @@
- # AT91SAM9G20 Board Type
- #
- CONFIG_MACH_AT91SAM9G20EK=y
-+# CONFIG_MACH_AT91SAM9G20EK_2MMC is not set
-+# CONFIG_MACH_USB_A9G20 is not set
-+# CONFIG_MACH_QIL_A9G20 is not set
-+# CONFIG_MACH_SBC35_A9G20 is not set
-
- #
- # AT91 Board Options
-@@ -191,6 +227,7 @@
- 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
-@@ -200,7 +237,7 @@
- #
- # Processor Features
- #
--# CONFIG_ARM_THUMB is not set
-+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
-@@ -217,28 +254,35 @@
- #
- # Kernel Features
- #
--# CONFIG_TICK_ONESHOT is not set
- # 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 is not set
- CONFIG_HZ=100
- CONFIG_AEABI=y
- CONFIG_OABI_COMPAT=y
--# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_SPARSEMEM_STATIC is not set
--# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-+CONFIG_PAGEFLAGS_EXTENDED=y
- CONFIG_SPLIT_PTLOCK_CPUS=4096
--# CONFIG_RESOURCES_64BIT is not set
--CONFIG_ZONE_DMA_FLAG=1
--CONFIG_BOUNCE=y
-+# CONFIG_PHYS_ADDR_T_64BIT is not set
-+CONFIG_ZONE_DMA_FLAG=0
- CONFIG_VIRT_TO_BUS=y
-+CONFIG_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
- CONFIG_LEDS=y
- CONFIG_LEDS_CPU=y
- CONFIG_ALIGNMENT_TRAP=y
-@@ -253,6 +297,11 @@
- # CONFIG_KEXEC is not set
-
- #
-+# CPU Power Management
-+#
-+# CONFIG_CPU_IDLE is not set
-+
-+#
- # Floating point emulation
- #
-
-@@ -268,6 +317,8 @@
- # 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
-
-@@ -275,16 +326,12 @@
- # Power management options
- #
- CONFIG_PM=y
--# CONFIG_PM_LEGACY is not set
- # CONFIG_PM_DEBUG is not set
- CONFIG_PM_SLEEP=y
--CONFIG_SUSPEND_UP_POSSIBLE=y
- CONFIG_SUSPEND=y
-+CONFIG_SUSPEND_FREEZER=y
- # CONFIG_APM_EMULATION is not set
--
--#
--# Networking
--#
-+CONFIG_ARCH_SUSPEND_POSSIBLE=y
- CONFIG_NET=y
-
- #
-@@ -295,15 +342,13 @@
- CONFIG_UNIX=y
- # CONFIG_NET_KEY is not set
- CONFIG_INET=y
--# CONFIG_IP_MULTICAST is not set
-+CONFIG_IP_MULTICAST=y
- # CONFIG_IP_ADVANCED_ROUTER is not set
- CONFIG_IP_FIB_HASH=y
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_IP_PNP is not set
- # CONFIG_NET_IPIP is not set
- # CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
- # CONFIG_ARPD is not set
- # CONFIG_SYN_COOKIES is not set
- # CONFIG_INET_AH is not set
-@@ -315,15 +360,12 @@
- # CONFIG_INET_XFRM_MODE_TUNNEL is not set
- # CONFIG_INET_XFRM_MODE_BEET is not set
- # CONFIG_INET_LRO is not set
--CONFIG_INET_DIAG=y
--CONFIG_INET_TCP_DIAG=y
-+# CONFIG_INET_DIAG is not set
- # 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_INET6_XFRM_TUNNEL is not set
--# CONFIG_INET6_TUNNEL is not set
- # CONFIG_NETWORK_SECMARK is not set
- # CONFIG_NETFILTER is not set
- # CONFIG_IP_DCCP is not set
-@@ -331,6 +373,7 @@
- # 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
-@@ -340,24 +383,40 @@
- # CONFIG_LAPB is not set
- # CONFIG_ECONET is not set
- # CONFIG_WAN_ROUTER is not set
-+# CONFIG_PHONET 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 is not set
- # CONFIG_AF_RXRPC is not set
--
--#
--# Wireless
--#
--# CONFIG_CFG80211 is not set
--# CONFIG_WIRELESS_EXT is not set
--# CONFIG_MAC80211 is not set
--# CONFIG_IEEE80211 is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# CONFIG_WIMAX is not set
- # CONFIG_RFKILL is not set
- # CONFIG_NET_9P is not set
-
-@@ -371,16 +430,20 @@
- CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- CONFIG_STANDALONE=y
- CONFIG_PREVENT_FIRMWARE_BUILD=y
--# CONFIG_FW_LOADER is not set
-+CONFIG_FW_LOADER=y
-+CONFIG_FIRMWARE_IN_KERNEL=y
-+CONFIG_EXTRA_FIRMWARE=""
- # CONFIG_SYS_HYPERVISOR is not set
- # CONFIG_CONNECTOR is not set
- CONFIG_MTD=y
- # CONFIG_MTD_DEBUG is not set
--CONFIG_MTD_CONCAT=y
-+# CONFIG_MTD_CONCAT is not set
- CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_TESTS is not set
- # CONFIG_MTD_REDBOOT_PARTS is not set
- CONFIG_MTD_CMDLINE_PARTS=y
- # CONFIG_MTD_AFS_PARTS is not set
-+# CONFIG_MTD_AR7_PARTS is not set
-
- #
- # User Modules And Translation Layers
-@@ -424,6 +487,8 @@
- # Self-contained MTD device drivers
- #
- CONFIG_MTD_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
- # CONFIG_MTD_M25P80 is not set
- # CONFIG_MTD_SLRAM is not set
- # CONFIG_MTD_PHRAM is not set
-@@ -440,6 +505,7 @@
- # CONFIG_MTD_NAND_VERIFY_WRITE is not set
- # 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_ATMEL=y
-@@ -452,6 +518,11 @@
- # CONFIG_MTD_ONENAND is not set
-
- #
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
- # UBI - Unsorted block images
- #
- # CONFIG_MTD_UBI is not set
-@@ -463,15 +534,30 @@
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_UB is not set
- CONFIG_BLK_DEV_RAM=y
--CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_COUNT=4
- CONFIG_BLK_DEV_RAM_SIZE=8192
--CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-+# CONFIG_BLK_DEV_XIP is not set
- # CONFIG_CDROM_PKTCDVD is not set
- # CONFIG_ATA_OVER_ETH is not set
- CONFIG_MISC_DEVICES=y
--CONFIG_ATMEL_PWM=y
--# CONFIG_EEPROM_93CX6 is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+# CONFIG_ICS932S401 is not set
- CONFIG_ATMEL_SSC=y
-+# 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_AT25 is not set
-+# CONFIG_EEPROM_LEGACY is not set
-+CONFIG_EEPROM_93CX6=m
-+CONFIG_HAVE_IDE=y
-+# CONFIG_IDE is not set
-
- #
- # SCSI device support
-@@ -511,10 +597,12 @@
- # CONFIG_SCSI_SAS_LIBSAS is not set
- # CONFIG_SCSI_SRP_ATTRS is not set
- # CONFIG_SCSI_LOWLEVEL 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_NETDEVICES_MULTIQUEUE is not set
-+CONFIG_COMPAT_NET_DEV_OPS=y
- # CONFIG_DUMMY is not set
- # CONFIG_BONDING is not set
- # CONFIG_MACVLAN is not set
-@@ -527,7 +615,7 @@
- # MII PHY device drivers
- #
- # CONFIG_MARVELL_PHY is not set
--# CONFIG_DAVICOM_PHY is not set
-+CONFIG_DAVICOM_PHY=y
- # CONFIG_QSEMI_PHY is not set
- # CONFIG_LXT_PHY is not set
- # CONFIG_CICADA_PHY is not set
-@@ -535,6 +623,10 @@
- # CONFIG_SMSC_PHY is not set
- # CONFIG_BROADCOM_PHY is not set
- # CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
- # CONFIG_FIXED_PHY is not set
- # CONFIG_MDIO_BITBANG is not set
- CONFIG_NET_ETHERNET=y
-@@ -543,10 +635,18 @@
- # CONFIG_AX88796 is not set
- # CONFIG_SMC91X is not set
- # CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
- # CONFIG_NETDEV_10000 is not set
-@@ -555,7 +655,39 @@
- # Wireless LAN
- #
- # CONFIG_WLAN_PRE80211 is not set
--# CONFIG_WLAN_80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+CONFIG_LIBERTAS_SPI=m
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-
- #
- # USB Network Adapters
-@@ -568,7 +700,6 @@
- # CONFIG_WAN is not set
- # CONFIG_PPP is not set
- # CONFIG_SLIP is not set
--# CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
- # CONFIG_NETPOLL is not set
- # CONFIG_NET_POLL_CONTROLLER is not set
-@@ -579,15 +710,15 @@
- #
- CONFIG_INPUT=y
- # CONFIG_INPUT_FF_MEMLESS is not set
--# CONFIG_INPUT_POLLDEV is not set
-+CONFIG_INPUT_POLLDEV=m
-
- #
- # Userland interfaces
- #
- CONFIG_INPUT_MOUSEDEV=y
- # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
--CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
--CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
- # CONFIG_INPUT_JOYDEV is not set
- CONFIG_INPUT_EVDEV=y
- # CONFIG_INPUT_EVBUG is not set
-@@ -612,18 +743,18 @@
- #
- # Hardware I/O ports
- #
--CONFIG_SERIO=y
--CONFIG_SERIO_SERPORT=y
--# CONFIG_SERIO_RAW is not set
-+# 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
-
- #
-@@ -636,23 +767,64 @@
- #
- CONFIG_SERIAL_ATMEL=y
- CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
- # CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
- CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
- CONFIG_LEGACY_PTYS=y
--CONFIG_LEGACY_PTY_COUNT=16
-+CONFIG_LEGACY_PTY_COUNT=4
- # CONFIG_IPMI_HANDLER is not set
- CONFIG_HW_RANDOM=y
--# CONFIG_NVRAM is not set
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
- # CONFIG_R3964 is not set
- # CONFIG_RAW_DRIVER is not set
- # CONFIG_TCG_TPM is not set
--# CONFIG_I2C is not set
-+CONFIG_I2C=y
-+CONFIG_I2C_BOARDINFO=y
-+CONFIG_I2C_CHARDEV=m
-+CONFIG_I2C_HELPER_AUTO=y
-+CONFIG_I2C_ALGOBIT=y
-
- #
--# SPI support
-+# 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
-+# CONFIG_I2C_TINY_USB 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_MAX6875 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=y
- CONFIG_SPI_MASTER=y
-
-@@ -661,34 +833,83 @@
- #
- CONFIG_SPI_ATMEL=y
- # CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-
- #
- # SPI Protocol Masters
- #
--# CONFIG_EEPROM_AT25 is not set
- CONFIG_SPI_SPIDEV=y
- # CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# 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_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
- # 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_POSSIBLE=y
- # 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
-
- #
- # Multimedia devices
- #
-+
-+#
-+# Multimedia core support
-+#
- # CONFIG_VIDEO_DEV is not set
- # CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
- # CONFIG_DAB is not set
-
- #
-@@ -709,18 +930,14 @@
- #
- # CONFIG_VGA_CONSOLE is not set
- CONFIG_DUMMY_CONSOLE=y
--
--#
--# Sound
--#
- CONFIG_SOUND=y
--
--#
--# Advanced Linux Sound Architecture
--#
-+CONFIG_SOUND_OSS_CORE=y
- CONFIG_SND=y
- CONFIG_SND_TIMER=y
- CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_JACK=y
- CONFIG_SND_SEQUENCER=y
- # CONFIG_SND_SEQ_DUMMY is not set
- CONFIG_SND_OSSEMUL=y
-@@ -729,49 +946,28 @@
- CONFIG_SND_PCM_OSS_PLUGINS=y
- CONFIG_SND_SEQUENCER_OSS=y
- # CONFIG_SND_DYNAMIC_MINORS is not set
--CONFIG_SND_SUPPORT_OLD_API=y
-+# CONFIG_SND_SUPPORT_OLD_API is not set
- # CONFIG_SND_VERBOSE_PROCFS is not set
- # CONFIG_SND_VERBOSE_PRINTK is not set
- # CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-
- #
--# Generic devices
--#
--# CONFIG_SND_DUMMY is not set
--# CONFIG_SND_VIRMIDI is not set
--# CONFIG_SND_MTPAV is not set
--# CONFIG_SND_SERIAL_U16550 is not set
--# CONFIG_SND_MPU401 is not set
--
--#
--# ALSA ARM devices
--#
--# CONFIG_SND_AT91_AC97 is not set
--
--#
--# SPI devices
--#
--CONFIG_SND_AT73C213=y
--CONFIG_SND_AT73C213_TARGET_BITRATE=48000
--
-+# Atmel devices (AVR32 and AT91)
- #
--# USB devices
--#
--# CONFIG_SND_USB_AUDIO is not set
-+# CONFIG_SND_ATMEL_AC97C is not set
-+# CONFIG_SND_SPI is not set
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
- # CONFIG_SND_USB_CAIAQ is not set
--
--#
--# System on Chip audio support
--#
--# CONFIG_SND_SOC is not set
--
--#
--# SoC Audio support for SuperH
--#
--
--#
--# Open Sound System
--#
-+CONFIG_SND_SOC=y
-+CONFIG_SND_ATMEL_SOC=y
-+CONFIG_SND_ATMEL_SOC_SSC=y
-+CONFIG_SND_AT91_SOC_SAM9G20_WM8731=y
-+CONFIG_SND_SOC_I2C_AND_SPI=y
-+# CONFIG_SND_SOC_ALL_CODECS is not set
-+CONFIG_SND_SOC_WM8731=y
- # CONFIG_SOUND_PRIME is not set
- CONFIG_HID_SUPPORT=y
- CONFIG_HID=y
-@@ -781,16 +977,19 @@
- #
- # USB Input Devices
- #
--CONFIG_USB_HID=y
--# CONFIG_USB_HIDINPUT_POWERBOOK is not set
--# CONFIG_HID_FF is not set
--# CONFIG_USB_HIDDEV is not set
-+# CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-+
-+#
-+# Special HID drivers
-+#
- CONFIG_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
- # CONFIG_USB_ARCH_HAS_EHCI is not set
- CONFIG_USB=y
- # CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
- #
- # Miscellaneous USB options
-@@ -799,45 +998,56 @@
- # CONFIG_USB_DEVICE_CLASS is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
- # CONFIG_USB_SUSPEND is not set
--# CONFIG_USB_PERSIST is not set
- # CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-
- #
- # USB Host Controller Drivers
- #
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
- # CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
- CONFIG_USB_OHCI_HCD=y
- # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
- # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
- CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_SL811_HCD is not set
- # CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-
- #
- # USB Device Class drivers
- #
- # CONFIG_USB_ACM is not set
- # CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
- #
-
- #
--# may also be needed; see USB_STORAGE Help for more information
-+# also be needed; see USB_STORAGE Help for more info
- #
- CONFIG_USB_STORAGE=y
- # CONFIG_USB_STORAGE_DEBUG is not set
- # CONFIG_USB_STORAGE_DATAFAB is not set
- # CONFIG_USB_STORAGE_FREECOM is not set
- # CONFIG_USB_STORAGE_ISD200 is not set
--# CONFIG_USB_STORAGE_DPCM is not set
- # CONFIG_USB_STORAGE_USBAT is not set
- # CONFIG_USB_STORAGE_SDDR09 is not set
- # CONFIG_USB_STORAGE_SDDR55 is not set
- # CONFIG_USB_STORAGE_JUMPSHOT is not set
- # CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
- # CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
- # CONFIG_USB_LIBUSUAL is not set
-
- #
-@@ -845,15 +1055,10 @@
- #
- # CONFIG_USB_MDC800 is not set
- # CONFIG_USB_MICROTEK is not set
--CONFIG_USB_MON=y
-
- #
- # USB port drivers
- #
--
--#
--# USB Serial Converter support
--#
- # CONFIG_USB_SERIAL is not set
-
- #
-@@ -862,7 +1067,7 @@
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
- # CONFIG_USB_ADUTUX is not set
--# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_SEVSEG is not set
- # CONFIG_USB_RIO500 is not set
- # CONFIG_USB_LEGOTOWER is not set
- # CONFIG_USB_LCD is not set
-@@ -870,7 +1075,6 @@
- # CONFIG_USB_LED is not set
- # CONFIG_USB_CYPRESS_CY7C63 is not set
- # CONFIG_USB_CYTHERM is not set
--# CONFIG_USB_PHIDGET is not set
- # CONFIG_USB_IDMOUSE is not set
- # CONFIG_USB_FTDI_ELAN is not set
- # CONFIG_USB_APPLEDISPLAY is not set
-@@ -878,62 +1082,80 @@
- # CONFIG_USB_TRANCEVIBRATOR is not set
- # CONFIG_USB_IOWARRIOR is not set
- # CONFIG_USB_TEST is not set
--
--#
--# USB DSL modem support
--#
--
--#
--# USB Gadget Support
--#
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
- CONFIG_USB_GADGET=y
- # CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
- CONFIG_USB_GADGET_SELECTED=y
--# CONFIG_USB_GADGET_AMD5536UDC is not set
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
- # CONFIG_USB_GADGET_ATMEL_USBA is not set
- # CONFIG_USB_GADGET_FSL_USB2 is not set
--# CONFIG_USB_GADGET_NET2280 is not set
--# CONFIG_USB_GADGET_PXA2XX is not set
--# CONFIG_USB_GADGET_M66592 is not set
--# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_LH7A40X is not set
- # CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
- # CONFIG_USB_GADGET_S3C2410 is not set
--CONFIG_USB_GADGET_AT91=y
--CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
- # CONFIG_USB_GADGET_DUALSPEED is not set
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ETH is not set
--CONFIG_USB_GADGETFS=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
- CONFIG_USB_FILE_STORAGE=m
- # CONFIG_USB_FILE_STORAGE_TEST is not set
- CONFIG_USB_G_SERIAL=m
- # CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
- CONFIG_MMC=y
- # CONFIG_MMC_DEBUG is not set
- # CONFIG_MMC_UNSAFE_RESUME is not set
-
- #
--# MMC/SD Card Drivers
-+# MMC/SD/SDIO Card Drivers
- #
- CONFIG_MMC_BLOCK=y
- CONFIG_MMC_BLOCK_BOUNCE=y
--# CONFIG_SDIO_UART is not set
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-
- #
--# MMC/SD Host Controller Drivers
-+# MMC/SD/SDIO Host Controller Drivers
- #
-+# CONFIG_MMC_SDHCI is not set
- CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
- # CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
- CONFIG_NEW_LEDS=y
- CONFIG_LEDS_CLASS=y
-
- #
- # LED drivers
- #
--CONFIG_LEDS_ATMEL_PWM=y
-+# CONFIG_LEDS_PCA9532 is not set
- CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP5521 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_BD2802 is not set
-
- #
- # LED Triggers
-@@ -941,6 +1163,13 @@
- CONFIG_LEDS_TRIGGERS=y
- CONFIG_LEDS_TRIGGER_TIMER=y
- CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
- CONFIG_RTC_LIB=y
- CONFIG_RTC_CLASS=y
- CONFIG_RTC_HCTOSYS=y
-@@ -957,20 +1186,46 @@
- # 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
-+
-+#
- # SPI RTC drivers
- #
--# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
- # CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-
- #
- # 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_STK17TA8 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
-
- #
-@@ -979,6 +1234,11 @@
- CONFIG_RTC_DRV_AT91SAM9=y
- CONFIG_RTC_DRV_AT91SAM9_RTT=0
- CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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
-@@ -987,24 +1247,28 @@
- # CONFIG_EXT2_FS_XATTR is not set
- # CONFIG_EXT2_FS_XIP is not set
- # CONFIG_EXT3_FS is not set
--# CONFIG_EXT4DEV_FS is not set
-+# CONFIG_EXT4_FS is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
- # CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
- # CONFIG_XFS_FS is not set
--# CONFIG_GFS2_FS is not set
- # CONFIG_OCFS2_FS is not set
--# CONFIG_MINIX_FS is not set
--# CONFIG_ROMFS_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_DNOTIFY=y
- CONFIG_INOTIFY=y
- CONFIG_INOTIFY_USER=y
- # CONFIG_QUOTA is not set
--CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
- # CONFIG_FUSE_FS is not set
-
- #
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
- # CD-ROM/DVD Filesystems
- #
- # CONFIG_ISO9660_FS is not set
-@@ -1025,15 +1289,13 @@
- #
- 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
--
--#
--# Miscellaneous filesystems
--#
-+CONFIG_MISC_FILESYSTEMS=y
- # CONFIG_ADFS_FS is not set
- # CONFIG_AFFS_FS is not set
- # CONFIG_HFS_FS is not set
-@@ -1052,25 +1314,29 @@
- # CONFIG_JFFS2_LZO is not set
- CONFIG_JFFS2_RTIME=y
- # CONFIG_JFFS2_RUBIN is not set
--CONFIG_CRAMFS=y
-+CONFIG_CRAMFS=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
- # 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 is not set
- # CONFIG_NFS_V4 is not set
--# CONFIG_NFS_DIRECTIO is not set
- # CONFIG_NFSD is not set
--CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
- CONFIG_LOCKD_V4=y
- CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
--# CONFIG_SUNRPC_BIND34 is not set
- # CONFIG_RPCSEC_GSS_KRB5 is not set
- # CONFIG_RPCSEC_GSS_SPKM3 is not set
- # CONFIG_SMB_FS is not set
-@@ -1120,49 +1386,173 @@
- # 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_ISO8859_15 is not set
- # CONFIG_NLS_KOI8_R is not set
- # CONFIG_NLS_KOI8_U is not set
--CONFIG_NLS_UTF8=y
-+# CONFIG_NLS_UTF8 is not set
- # CONFIG_DLM is not set
--# CONFIG_INSTRUMENTATION is not set
-
- #
- # Kernel hacking
- #
- # CONFIG_PRINTK_TIME is not set
--# CONFIG_ENABLE_WARN_DEPRECATED is not set
-+CONFIG_ENABLE_WARN_DEPRECATED=y
- CONFIG_ENABLE_MUST_CHECK=y
-+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 is not set
- CONFIG_DEBUG_BUGVERBOSE=y
--CONFIG_FRAME_POINTER=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_DEBUG_USER is not set
-+CONFIG_HAVE_ARCH_KGDB=y
-+CONFIG_ARM_UNWIND=y
-+CONFIG_DEBUG_USER=y
-
- #
- # 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 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-
- #
- # Library routines
- #
- CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
- # CONFIG_CRC_CCITT is not set
- # CONFIG_CRC16 is not set
--# CONFIG_CRC_ITU_T is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
- CONFIG_CRC32=y
- # CONFIG_CRC7 is not set
- # CONFIG_LIBCRC32C is not set
- CONFIG_ZLIB_INFLATE=y
- CONFIG_ZLIB_DEFLATE=y
--CONFIG_PLIST=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
- CONFIG_HAS_IOMEM=y
- CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9261ek_defconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/configs/at91sam9261ek_defconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/configs/at91sam9261ek_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -1,17 +1,18 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.24-rc7
--# Tue Jan 8 22:21:49 2008
-+# Linux kernel version: 2.6.30
-+# Tue Oct 13 12:05:37 2009
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
- CONFIG_GENERIC_GPIO=y
--# CONFIG_GENERIC_TIME is not set
--# CONFIG_GENERIC_CLOCKEVENTS is not set
-+CONFIG_GENERIC_TIME=y
-+CONFIG_GENERIC_CLOCKEVENTS=y
- CONFIG_MMU=y
- # CONFIG_NO_IOPORT is not set
- 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
-@@ -21,7 +22,7 @@
- # CONFIG_ARCH_HAS_ILOG2_U64 is not set
- CONFIG_GENERIC_HWEIGHT=y
- CONFIG_GENERIC_CALIBRATE_DELAY=y
--CONFIG_ZONE_DMA=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
- CONFIG_VECTORS_BASE=0xffff0000
- CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-@@ -39,57 +40,82 @@
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- # CONFIG_TASKSTATS is not set
--# CONFIG_USER_NS is not set
--# CONFIG_PID_NS 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 is not set
- CONFIG_LOG_BUF_SHIFT=14
-+# CONFIG_GROUP_SCHED is not set
- # CONFIG_CGROUPS is not set
--CONFIG_FAIR_GROUP_SCHED=y
--CONFIG_FAIR_USER_SCHED=y
--# CONFIG_FAIR_CGROUP_SCHED is not set
- CONFIG_SYSFS_DEPRECATED=y
-+CONFIG_SYSFS_DEPRECATED_V2=y
- # CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
- CONFIG_BLK_DEV_INITRD=y
- CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
- CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
- # CONFIG_EMBEDDED is not set
- CONFIG_UID16=y
- CONFIG_SYSCTL_SYSCALL=y
- CONFIG_KALLSYMS=y
--# CONFIG_KALLSYMS_ALL is not set
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
- CONFIG_HOTPLUG=y
- CONFIG_PRINTK=y
- CONFIG_BUG=y
- CONFIG_ELF_CORE=y
- CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
--CONFIG_ANON_INODES=y
- CONFIG_EPOLL=y
- CONFIG_SIGNALFD=y
-+CONFIG_TIMERFD=y
- CONFIG_EVENTFD=y
- CONFIG_SHMEM=y
-+CONFIG_AIO=y
- CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# CONFIG_SLOW_WORK is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
- CONFIG_SLABINFO=y
- CONFIG_RT_MUTEXES=y
--# CONFIG_TINY_SHMEM is not set
- 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_KMOD=y
- CONFIG_BLOCK=y
- # CONFIG_LBD is not set
--# CONFIG_BLK_DEV_IO_TRACE is not set
--# CONFIG_LSF is not set
- # CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-
- #
- # IO Schedulers
-@@ -103,6 +129,7 @@
- # CONFIG_DEFAULT_CFQ is not set
- # CONFIG_DEFAULT_NOOP is not set
- CONFIG_DEFAULT_IOSCHED="anticipatory"
-+CONFIG_FREEZER=y
-
- #
- # System Type
-@@ -112,11 +139,10 @@
- # CONFIG_ARCH_REALVIEW is not set
- # CONFIG_ARCH_VERSATILE is not set
- CONFIG_ARCH_AT91=y
--# CONFIG_ARCH_CLPS7500 is not set
- # CONFIG_ARCH_CLPS711X is not set
--# CONFIG_ARCH_CO285 is not set
- # CONFIG_ARCH_EBSA110 is not set
- # CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
- # CONFIG_ARCH_FOOTBRIDGE is not set
- # CONFIG_ARCH_NETX is not set
- # CONFIG_ARCH_H720X is not set
-@@ -128,26 +154,26 @@
- # 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_KS8695 is not set
- # CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
- # CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
- # CONFIG_ARCH_PNX4008 is not set
- # CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
- # CONFIG_ARCH_OMAP is not set
--
--#
--# Boot options
--#
--
--#
--# Power management
--#
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-
- #
- # Atmel AT91 System-on-Chip
-@@ -155,8 +181,13 @@
- # CONFIG_ARCH_AT91RM9200 is not set
- # CONFIG_ARCH_AT91SAM9260 is not set
- CONFIG_ARCH_AT91SAM9261=y
-+# CONFIG_ARCH_AT91SAM9G10 is not set
- # CONFIG_ARCH_AT91SAM9263 is not set
- # CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
- # CONFIG_ARCH_AT91X40 is not set
- CONFIG_AT91_PMC_UNIT=y
-
-@@ -175,8 +206,15 @@
- # AT91 Feature Selections
- #
- CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
--# CONFIG_ATMEL_TCLIB is not set
-+# CONFIG_AT91_SLOW_CLOCK is not set
- CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-
- #
- # Processor Type
-@@ -185,6 +223,7 @@
- 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
-@@ -194,7 +233,7 @@
- #
- # Processor Features
- #
--# CONFIG_ARM_THUMB is not set
-+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
-@@ -211,25 +250,37 @@
- #
- # Kernel Features
- #
--# CONFIG_TICK_ONESHOT is not set
-+# 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 is not set
- CONFIG_HZ=100
--# CONFIG_AEABI is not set
--# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_SPARSEMEM_STATIC is not set
--# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-+CONFIG_PAGEFLAGS_EXTENDED=y
- CONFIG_SPLIT_PTLOCK_CPUS=4096
--# CONFIG_RESOURCES_64BIT is not set
--CONFIG_ZONE_DMA_FLAG=1
--CONFIG_BOUNCE=y
-+# CONFIG_PHYS_ADDR_T_64BIT is not set
-+CONFIG_ZONE_DMA_FLAG=0
- CONFIG_VIRT_TO_BUS=y
--# CONFIG_LEDS is not set
-+CONFIG_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
- CONFIG_ALIGNMENT_TRAP=y
-
- #
-@@ -242,6 +293,11 @@
- # CONFIG_KEXEC is not set
-
- #
-+# CPU Power Management
-+#
-+# CONFIG_CPU_IDLE is not set
-+
-+#
- # Floating point emulation
- #
-
-@@ -257,19 +313,21 @@
- # 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
--# CONFIG_ARTHUR is not set
-
- #
- # Power management options
- #
--# CONFIG_PM is not set
--CONFIG_SUSPEND_UP_POSSIBLE=y
--
--#
--# Networking
--#
-+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
-
- #
-@@ -278,21 +336,15 @@
- 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_NET_KEY is not set
- CONFIG_INET=y
--# CONFIG_IP_MULTICAST is not set
-+CONFIG_IP_MULTICAST=y
- # CONFIG_IP_ADVANCED_ROUTER is not set
- CONFIG_IP_FIB_HASH=y
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_IP_PNP is not set
- # CONFIG_NET_IPIP is not set
- # CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
- # CONFIG_ARPD is not set
- # CONFIG_SYN_COOKIES is not set
- # CONFIG_INET_AH is not set
-@@ -300,19 +352,16 @@
- # CONFIG_INET_IPCOMP is not set
- # CONFIG_INET_XFRM_TUNNEL is not set
- # CONFIG_INET_TUNNEL is not set
--CONFIG_INET_XFRM_MODE_TRANSPORT=y
--CONFIG_INET_XFRM_MODE_TUNNEL=y
--CONFIG_INET_XFRM_MODE_BEET=y
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
- # CONFIG_INET_LRO is not set
--CONFIG_INET_DIAG=y
--CONFIG_INET_TCP_DIAG=y
-+# CONFIG_INET_DIAG is not set
- # 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_INET6_XFRM_TUNNEL is not set
--# CONFIG_INET6_TUNNEL is not set
- # CONFIG_NETWORK_SECMARK is not set
- # CONFIG_NETFILTER is not set
- # CONFIG_IP_DCCP is not set
-@@ -320,6 +369,7 @@
- # 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
-@@ -329,24 +379,40 @@
- # CONFIG_LAPB is not set
- # CONFIG_ECONET is not set
- # CONFIG_WAN_ROUTER is not set
-+# CONFIG_PHONET 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 is not set
- # CONFIG_AF_RXRPC is not set
--
--#
--# Wireless
--#
--# CONFIG_CFG80211 is not set
--# CONFIG_WIRELESS_EXT is not set
--# CONFIG_MAC80211 is not set
--# CONFIG_IEEE80211 is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# CONFIG_WIMAX is not set
- # CONFIG_RFKILL is not set
- # CONFIG_NET_9P is not set
-
-@@ -360,23 +426,25 @@
- CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- CONFIG_STANDALONE=y
- CONFIG_PREVENT_FIRMWARE_BUILD=y
--# CONFIG_FW_LOADER is not set
--# CONFIG_DEBUG_DRIVER is not set
--# CONFIG_DEBUG_DEVRES is not set
-+CONFIG_FW_LOADER=y
-+CONFIG_FIRMWARE_IN_KERNEL=y
-+CONFIG_EXTRA_FIRMWARE=""
- # 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 is not set
- # CONFIG_MTD_REDBOOT_PARTS is not set
- CONFIG_MTD_CMDLINE_PARTS=y
- # CONFIG_MTD_AFS_PARTS is not set
-+# CONFIG_MTD_AR7_PARTS is not set
-
- #
- # User Modules And Translation Layers
- #
--# CONFIG_MTD_CHAR is not set
-+CONFIG_MTD_CHAR=y
- CONFIG_MTD_BLKDEVS=y
- CONFIG_MTD_BLOCK=y
- # CONFIG_FTL is not set
-@@ -414,7 +482,9 @@
- #
- # Self-contained MTD device drivers
- #
--# CONFIG_MTD_DATAFLASH is not set
-+CONFIG_MTD_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
- # CONFIG_MTD_M25P80 is not set
- # CONFIG_MTD_SLRAM is not set
- # CONFIG_MTD_PHRAM is not set
-@@ -431,33 +501,55 @@
- # CONFIG_MTD_NAND_VERIFY_WRITE is not set
- # 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
- # CONFIG_MTD_NAND_NANDSIM is not set
- # CONFIG_MTD_NAND_PLATFORM is not set
- # CONFIG_MTD_ALAUDA is not set
- # CONFIG_MTD_ONENAND 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 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_UB is not set
- CONFIG_BLK_DEV_RAM=y
--CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_COUNT=4
- CONFIG_BLK_DEV_RAM_SIZE=8192
--CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-+# CONFIG_BLK_DEV_XIP is not set
- # CONFIG_CDROM_PKTCDVD is not set
- # CONFIG_ATA_OVER_ETH is not set
- CONFIG_MISC_DEVICES=y
--# CONFIG_EEPROM_93CX6 is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
- CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+CONFIG_EEPROM_93CX6=m
-+CONFIG_HAVE_IDE=y
-+# CONFIG_IDE is not set
-
- #
- # SCSI device support
-@@ -496,29 +588,58 @@
- # 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_SCSI_DEBUG is not set
-+# CONFIG_SCSI_LOWLEVEL 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_NETDEVICES_MULTIQUEUE is not set
-+CONFIG_COMPAT_NET_DEV_OPS=y
- # CONFIG_DUMMY is not set
- # CONFIG_BONDING is not set
- # CONFIG_MACVLAN is not set
- # CONFIG_EQUALIZER is not set
- # CONFIG_TUN is not set
- # CONFIG_VETH is not set
--# CONFIG_PHYLIB is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+# CONFIG_DAVICOM_PHY is not set
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=y
- # CONFIG_AX88796 is not set
- # CONFIG_SMC91X is not set
- CONFIG_DM9000=y
-+CONFIG_DM9000_DEBUGLEVEL=4
-+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
- # CONFIG_NETDEV_10000 is not set
-@@ -527,7 +648,39 @@
- # Wireless LAN
- #
- # CONFIG_WLAN_PRE80211 is not set
--# CONFIG_WLAN_80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+CONFIG_LIBERTAS_SPI=m
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-
- #
- # USB Network Adapters
-@@ -540,7 +693,6 @@
- # CONFIG_WAN is not set
- # CONFIG_PPP is not set
- # CONFIG_SLIP is not set
--# CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
- # CONFIG_NETPOLL is not set
- # CONFIG_NET_POLL_CONTROLLER is not set
-@@ -551,17 +703,17 @@
- #
- CONFIG_INPUT=y
- # CONFIG_INPUT_FF_MEMLESS is not set
--# CONFIG_INPUT_POLLDEV is not set
-+CONFIG_INPUT_POLLDEV=m
-
- #
- # Userland interfaces
- #
- CONFIG_INPUT_MOUSEDEV=y
- # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
--CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
--CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
- # CONFIG_INPUT_JOYDEV is not set
--# CONFIG_INPUT_EVDEV is not set
-+CONFIG_INPUT_EVDEV=y
- # CONFIG_INPUT_EVBUG is not set
-
- #
-@@ -580,33 +732,38 @@
- # CONFIG_INPUT_TABLET is not set
- CONFIG_INPUT_TOUCHSCREEN=y
- CONFIG_TOUCHSCREEN_ADS7846=y
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
- # CONFIG_TOUCHSCREEN_FUJITSU is not set
- # CONFIG_TOUCHSCREEN_GUNZE is not set
- # CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
- # CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
- # CONFIG_TOUCHSCREEN_MK712 is not set
- # CONFIG_TOUCHSCREEN_PENMOUNT is not set
- # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
- # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
--# CONFIG_TOUCHSCREEN_UCB1400 is not set
- # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
- # CONFIG_INPUT_MISC is not set
-
- #
- # Hardware I/O ports
- #
--CONFIG_SERIO=y
--CONFIG_SERIO_SERPORT=y
--# CONFIG_SERIO_RAW is not set
-+# 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
-
- #
-@@ -619,112 +776,99 @@
- #
- CONFIG_SERIAL_ATMEL=y
- CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
- # CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
- CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
- CONFIG_LEGACY_PTYS=y
--CONFIG_LEGACY_PTY_COUNT=256
-+CONFIG_LEGACY_PTY_COUNT=4
- # CONFIG_IPMI_HANDLER is not set
- CONFIG_HW_RANDOM=y
--# CONFIG_NVRAM is not set
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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 is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_MASTER=y
-
- #
--# I2C Algorithms
-+# SPI Master Controller Drivers
- #
--CONFIG_I2C_ALGOBIT=y
--# CONFIG_I2C_ALGOPCF is not set
--# CONFIG_I2C_ALGOPCA is not set
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-
- #
--# I2C Hardware Bus support
-+# SPI Protocol Masters
- #
--CONFIG_I2C_GPIO=y
--# CONFIG_I2C_OCORES is not set
--# CONFIG_I2C_PARPORT_LIGHT is not set
--# CONFIG_I2C_SIMTEC is not set
--# CONFIG_I2C_TAOS_EVM is not set
--# CONFIG_I2C_STUB is not set
--# CONFIG_I2C_TINY_USB is not set
--# CONFIG_I2C_PCA is not set
-+# CONFIG_SPI_SPIDEV is not set
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-
- #
--# Miscellaneous I2C Chip support
-+# Memory mapped GPIO expanders:
- #
--# CONFIG_SENSORS_DS1337 is not set
--# CONFIG_SENSORS_DS1374 is not set
--# CONFIG_DS1682 is not set
--# CONFIG_EEPROM_LEGACY is not set
--# CONFIG_SENSORS_PCF8574 is not set
--# CONFIG_SENSORS_PCA9539 is not set
--# CONFIG_SENSORS_PCF8591 is not set
--# CONFIG_SENSORS_MAX6875 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
-
- #
--# SPI support
-+# I2C GPIO expanders:
- #
--CONFIG_SPI=y
--# CONFIG_SPI_DEBUG is not set
--CONFIG_SPI_MASTER=y
-
- #
--# SPI Master Controller Drivers
-+# PCI GPIO expanders:
- #
--CONFIG_SPI_ATMEL=y
--# CONFIG_SPI_BITBANG is not set
-
- #
--# SPI Protocol Masters
-+# SPI GPIO expanders:
- #
--# CONFIG_EEPROM_AT25 is not set
--# CONFIG_SPI_SPIDEV is not set
--# CONFIG_SPI_TLE62X0 is not set
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
- # CONFIG_W1 is not set
- # CONFIG_POWER_SUPPLY is not set
- # CONFIG_HWMON is not set
--CONFIG_WATCHDOG=y
--CONFIG_WATCHDOG_NOWAYOUT=y
--
--#
--# Watchdog Device Drivers
--#
--# CONFIG_SOFT_WATCHDOG is not set
--CONFIG_AT91SAM9X_WATCHDOG=y
--
--#
--# USB-based Watchdog Cards
--#
--# CONFIG_USBPCWATCHDOG 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_POSSIBLE=y
- # 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_MFD_TMIO is not set
-+# CONFIG_MFD_T7L66XB is not set
-+# CONFIG_MFD_TC6387XB is not set
-+# CONFIG_MFD_TC6393XB is not set
-
- #
- # Multimedia devices
- #
-+
-+#
-+# Multimedia core support
-+#
- # CONFIG_VIDEO_DEV is not set
- # CONFIG_DVB_CORE is not set
--CONFIG_DAB=y
--# CONFIG_USB_DABUSB is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB is not set
-
- #
- # Graphics support
-@@ -734,6 +878,7 @@
- CONFIG_FB=y
- # CONFIG_FIRMWARE_EDID is not set
- # CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
- CONFIG_FB_CFB_FILLRECT=y
- CONFIG_FB_CFB_COPYAREA=y
- CONFIG_FB_CFB_IMAGEBLIT=y
-@@ -741,8 +886,8 @@
- # CONFIG_FB_SYS_FILLRECT is not set
- # CONFIG_FB_SYS_COPYAREA is not set
- # CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
- # CONFIG_FB_SYS_FOPS is not set
--CONFIG_FB_DEFERRED_IO=y
- # CONFIG_FB_SVGALIB is not set
- # CONFIG_FB_MACMODES is not set
- # CONFIG_FB_BACKLIGHT is not set
-@@ -755,10 +900,17 @@
- # CONFIG_FB_S1D15605 is not set
- # CONFIG_FB_S1D13XXX is not set
- CONFIG_FB_ATMEL=y
--# CONFIG_FB_INTSRAM is not set
-+CONFIG_FB_INTSRAM=y
- # CONFIG_FB_ATMEL_STN is not set
- # CONFIG_FB_VIRTUAL is not set
--# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_GENERIC is not set
-
- #
- # Display device support
-@@ -772,11 +924,40 @@
- CONFIG_DUMMY_CONSOLE=y
- # CONFIG_FRAMEBUFFER_CONSOLE is not set
- # CONFIG_LOGO is not set
--
--#
--# Sound
--#
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+# CONFIG_SND_ATMEL_AC97C is not set
-+CONFIG_SND_SPI=y
-+CONFIG_SND_AT73C213=y
-+CONFIG_SND_AT73C213_TARGET_BITRATE=48000
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
- CONFIG_HID_SUPPORT=y
- CONFIG_HID=y
- # CONFIG_HID_DEBUG is not set
-@@ -786,63 +967,76 @@
- # USB Input Devices
- #
- # CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-
- #
--# USB HID Boot Protocol drivers
-+# Special HID drivers
- #
--# CONFIG_USB_KBD is not set
--# CONFIG_USB_MOUSE is not set
- CONFIG_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
- # CONFIG_USB_ARCH_HAS_EHCI is not set
- CONFIG_USB=y
- # CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
- #
- # Miscellaneous USB options
- #
- CONFIG_USB_DEVICEFS=y
--CONFIG_USB_DEVICE_CLASS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
- # CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-
- #
- # USB Host Controller Drivers
- #
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
- # CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
- CONFIG_USB_OHCI_HCD=y
- # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
- # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
- CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_SL811_HCD is not set
- # CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-
- #
- # USB Device Class drivers
- #
- # CONFIG_USB_ACM is not set
- # CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
- #
-
- #
--# may also be needed; see USB_STORAGE Help for more information
-+# also be needed; see USB_STORAGE Help for more info
- #
- CONFIG_USB_STORAGE=y
--CONFIG_USB_STORAGE_DEBUG=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
- # CONFIG_USB_STORAGE_DATAFAB is not set
- # CONFIG_USB_STORAGE_FREECOM is not set
- # CONFIG_USB_STORAGE_ISD200 is not set
--# CONFIG_USB_STORAGE_DPCM is not set
- # CONFIG_USB_STORAGE_USBAT is not set
- # CONFIG_USB_STORAGE_SDDR09 is not set
- # CONFIG_USB_STORAGE_SDDR55 is not set
- # CONFIG_USB_STORAGE_JUMPSHOT is not set
- # CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
- # CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
- # CONFIG_USB_LIBUSUAL is not set
-
- #
-@@ -850,15 +1044,10 @@
- #
- # CONFIG_USB_MDC800 is not set
- # CONFIG_USB_MICROTEK is not set
--CONFIG_USB_MON=y
-
- #
- # USB port drivers
- #
--
--#
--# USB Serial Converter support
--#
- # CONFIG_USB_SERIAL is not set
-
- #
-@@ -867,7 +1056,7 @@
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
- # CONFIG_USB_ADUTUX is not set
--# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_SEVSEG is not set
- # CONFIG_USB_RIO500 is not set
- # CONFIG_USB_LEGOTOWER is not set
- # CONFIG_USB_LCD is not set
-@@ -875,7 +1064,6 @@
- # CONFIG_USB_LED is not set
- # CONFIG_USB_CYPRESS_CY7C63 is not set
- # CONFIG_USB_CYTHERM is not set
--# CONFIG_USB_PHIDGET is not set
- # CONFIG_USB_IDMOUSE is not set
- # CONFIG_USB_FTDI_ELAN is not set
- # CONFIG_USB_APPLEDISPLAY is not set
-@@ -883,56 +1071,90 @@
- # CONFIG_USB_TRANCEVIBRATOR is not set
- # CONFIG_USB_IOWARRIOR is not set
- # CONFIG_USB_TEST is not set
--
--#
--# USB DSL modem support
--#
--
--#
--# USB Gadget Support
--#
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
- CONFIG_USB_GADGET=y
--# CONFIG_USB_GADGET_DEBUG is not set
- # CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
- CONFIG_USB_GADGET_SELECTED=y
--# CONFIG_USB_GADGET_AMD5536UDC is not set
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
- # CONFIG_USB_GADGET_ATMEL_USBA is not set
- # CONFIG_USB_GADGET_FSL_USB2 is not set
--# CONFIG_USB_GADGET_NET2280 is not set
--# CONFIG_USB_GADGET_PXA2XX is not set
--# CONFIG_USB_GADGET_M66592 is not set
--# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_LH7A40X is not set
- # CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
- # CONFIG_USB_GADGET_S3C2410 is not set
--CONFIG_USB_GADGET_AT91=y
--CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
- # CONFIG_USB_GADGET_DUALSPEED is not set
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ETH is not set
--CONFIG_USB_GADGETFS=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
- CONFIG_USB_FILE_STORAGE=m
- # CONFIG_USB_FILE_STORAGE_TEST is not set
- CONFIG_USB_G_SERIAL=m
- # CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
- CONFIG_MMC=y
- # CONFIG_MMC_DEBUG is not set
- # CONFIG_MMC_UNSAFE_RESUME is not set
-
- #
--# MMC/SD Card Drivers
-+# MMC/SD/SDIO Card Drivers
- #
- CONFIG_MMC_BLOCK=y
- CONFIG_MMC_BLOCK_BOUNCE=y
--# CONFIG_SDIO_UART is not set
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-
- #
--# MMC/SD Host Controller Drivers
-+# MMC/SD/SDIO Host Controller Drivers
- #
--CONFIG_MMC_AT91=y
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=m
-+# CONFIG_MMC_ATMELMCI is not set
- # CONFIG_MMC_SPI is not set
--# CONFIG_NEW_LEDS is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
- CONFIG_RTC_LIB=y
- CONFIG_RTC_CLASS=y
- CONFIG_RTC_HCTOSYS=y
-@@ -949,40 +1171,42 @@
- # 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
--
--#
- # SPI RTC drivers
- #
--# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
- # CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-
- #
- # 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_STK17TA8 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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
-@@ -991,24 +1215,28 @@
- # CONFIG_EXT2_FS_XATTR is not set
- # CONFIG_EXT2_FS_XIP is not set
- # CONFIG_EXT3_FS is not set
--# CONFIG_EXT4DEV_FS is not set
-+# CONFIG_EXT4_FS is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
- # CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
- # CONFIG_XFS_FS is not set
--# CONFIG_GFS2_FS is not set
- # CONFIG_OCFS2_FS is not set
--# CONFIG_MINIX_FS is not set
--# CONFIG_ROMFS_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_DNOTIFY=y
- CONFIG_INOTIFY=y
- CONFIG_INOTIFY_USER=y
- # CONFIG_QUOTA is not set
--CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
- # CONFIG_FUSE_FS is not set
-
- #
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
- # CD-ROM/DVD Filesystems
- #
- # CONFIG_ISO9660_FS is not set
-@@ -1018,7 +1246,7 @@
- # DOS/FAT/NT Filesystems
- #
- CONFIG_FAT_FS=y
--# CONFIG_MSDOS_FS is not set
-+CONFIG_MSDOS_FS=y
- CONFIG_VFAT_FS=y
- CONFIG_FAT_DEFAULT_CODEPAGE=437
- CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-@@ -1029,15 +1257,13 @@
- #
- 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
--
--#
--# Miscellaneous filesystems
--#
-+CONFIG_MISC_FILESYSTEMS=y
- # CONFIG_ADFS_FS is not set
- # CONFIG_AFFS_FS is not set
- # CONFIG_HFS_FS is not set
-@@ -1045,16 +1271,42 @@
- # CONFIG_BEFS_FS is not set
- # CONFIG_BFS_FS is not set
- # CONFIG_EFS_FS is not set
--# CONFIG_JFFS2_FS is not set
--CONFIG_CRAMFS=y
-+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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
- # 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 is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
-+# CONFIG_NFS_V4 is not set
- # CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
- # CONFIG_CIFS is not set
- # CONFIG_NCP_FS is not set
-@@ -1102,14 +1354,11 @@
- # 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 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_NLS_UTF8=y
- # CONFIG_DLM is not set
--CONFIG_INSTRUMENTATION=y
--# CONFIG_PROFILING is not set
--# CONFIG_MARKERS is not set
-
- #
- # Kernel hacking
-@@ -1117,63 +1366,161 @@
- # CONFIG_PRINTK_TIME is not set
- CONFIG_ENABLE_WARN_DEPRECATED=y
- CONFIG_ENABLE_MUST_CHECK=y
-+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_SCHED_DEBUG=y
--# CONFIG_SCHEDSTATS is not set
--# CONFIG_TIMER_STATS is not set
--# CONFIG_DEBUG_SLAB 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_KERNEL is not set
- CONFIG_DEBUG_BUGVERBOSE=y
--# CONFIG_DEBUG_INFO is not set
--# CONFIG_DEBUG_VM is not set
--# CONFIG_DEBUG_LIST is not set
--# CONFIG_DEBUG_SG is not set
--CONFIG_FRAME_POINTER=y
--CONFIG_FORCED_INLINING=y
--# CONFIG_BOOT_PRINTK_DELAY is not set
--# CONFIG_RCU_TORTURE_TEST is not set
--# CONFIG_FAULT_INJECTION is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
- CONFIG_DEBUG_USER=y
--# CONFIG_DEBUG_ERRORS is not set
--CONFIG_DEBUG_LL=y
--# CONFIG_DEBUG_ICEDCC 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 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-
- #
- # Library routines
- #
- CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
- # CONFIG_CRC_CCITT is not set
- # CONFIG_CRC16 is not set
--# CONFIG_CRC_ITU_T is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
- CONFIG_CRC32=y
- # CONFIG_CRC7 is not set
- # CONFIG_LIBCRC32C is not set
- CONFIG_ZLIB_INFLATE=y
--CONFIG_PLIST=y
-+CONFIG_ZLIB_DEFLATE=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
- CONFIG_HAS_IOMEM=y
- CONFIG_HAS_IOPORT=y
- CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9260ek_defconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/configs/at91sam9260ek_defconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/configs/at91sam9260ek_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -1,17 +1,18 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.24-rc7
--# Tue Jan 8 22:20:50 2008
-+# Linux kernel version: 2.6.30
-+# Tue Oct 13 12:38:49 2009
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
- CONFIG_GENERIC_GPIO=y
--# CONFIG_GENERIC_TIME is not set
--# CONFIG_GENERIC_CLOCKEVENTS is not set
-+CONFIG_GENERIC_TIME=y
-+CONFIG_GENERIC_CLOCKEVENTS=y
- CONFIG_MMU=y
- # CONFIG_NO_IOPORT is not set
- 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
-@@ -21,7 +22,7 @@
- # CONFIG_ARCH_HAS_ILOG2_U64 is not set
- CONFIG_GENERIC_HWEIGHT=y
- CONFIG_GENERIC_CALIBRATE_DELAY=y
--CONFIG_ZONE_DMA=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
- CONFIG_VECTORS_BASE=0xffff0000
- CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-@@ -39,57 +40,82 @@
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- # CONFIG_TASKSTATS is not set
--# CONFIG_USER_NS is not set
--# CONFIG_PID_NS 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 is not set
- CONFIG_LOG_BUF_SHIFT=14
-+# CONFIG_GROUP_SCHED is not set
- # CONFIG_CGROUPS is not set
--CONFIG_FAIR_GROUP_SCHED=y
--CONFIG_FAIR_USER_SCHED=y
--# CONFIG_FAIR_CGROUP_SCHED is not set
- CONFIG_SYSFS_DEPRECATED=y
-+CONFIG_SYSFS_DEPRECATED_V2=y
- # CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
- CONFIG_BLK_DEV_INITRD=y
- CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
- CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
- # CONFIG_EMBEDDED is not set
- CONFIG_UID16=y
- CONFIG_SYSCTL_SYSCALL=y
- CONFIG_KALLSYMS=y
--# CONFIG_KALLSYMS_ALL is not set
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
- CONFIG_HOTPLUG=y
- CONFIG_PRINTK=y
- CONFIG_BUG=y
- CONFIG_ELF_CORE=y
- CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
--CONFIG_ANON_INODES=y
- CONFIG_EPOLL=y
- CONFIG_SIGNALFD=y
-+CONFIG_TIMERFD=y
- CONFIG_EVENTFD=y
- CONFIG_SHMEM=y
-+CONFIG_AIO=y
- CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# CONFIG_SLOW_WORK is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
- CONFIG_SLABINFO=y
- CONFIG_RT_MUTEXES=y
--# CONFIG_TINY_SHMEM is not set
- 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_KMOD=y
- CONFIG_BLOCK=y
- # CONFIG_LBD is not set
--# CONFIG_BLK_DEV_IO_TRACE is not set
--# CONFIG_LSF is not set
- # CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-
- #
- # IO Schedulers
-@@ -103,6 +129,7 @@
- # CONFIG_DEFAULT_CFQ is not set
- # CONFIG_DEFAULT_NOOP is not set
- CONFIG_DEFAULT_IOSCHED="anticipatory"
-+CONFIG_FREEZER=y
-
- #
- # System Type
-@@ -112,11 +139,10 @@
- # CONFIG_ARCH_REALVIEW is not set
- # CONFIG_ARCH_VERSATILE is not set
- CONFIG_ARCH_AT91=y
--# CONFIG_ARCH_CLPS7500 is not set
- # CONFIG_ARCH_CLPS711X is not set
--# CONFIG_ARCH_CO285 is not set
- # CONFIG_ARCH_EBSA110 is not set
- # CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
- # CONFIG_ARCH_FOOTBRIDGE is not set
- # CONFIG_ARCH_NETX is not set
- # CONFIG_ARCH_H720X is not set
-@@ -128,26 +154,26 @@
- # 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_KS8695 is not set
- # CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
- # CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
- # CONFIG_ARCH_PNX4008 is not set
- # CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
- # CONFIG_ARCH_OMAP is not set
--
--#
--# Boot options
--#
--
--#
--# Power management
--#
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-
- #
- # Atmel AT91 System-on-Chip
-@@ -155,8 +181,13 @@
- # CONFIG_ARCH_AT91RM9200 is not set
- CONFIG_ARCH_AT91SAM9260=y
- # CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
- # CONFIG_ARCH_AT91SAM9263 is not set
- # CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
- # CONFIG_ARCH_AT91X40 is not set
- CONFIG_AT91_PMC_UNIT=y
-
-@@ -171,6 +202,10 @@
- CONFIG_MACH_AT91SAM9260EK=y
- # CONFIG_MACH_CAM60 is not set
- # CONFIG_MACH_SAM9_L9260 is not set
-+# CONFIG_MACH_AFEB9260 is not set
-+# CONFIG_MACH_USB_A9260 is not set
-+# CONFIG_MACH_QIL_A9260 is not set
-+# CONFIG_MACH_SBC35_A9260 is not set
-
- #
- # AT91 Board Options
-@@ -182,8 +217,15 @@
- # AT91 Feature Selections
- #
- CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
--# CONFIG_ATMEL_TCLIB is not set
-+# CONFIG_AT91_SLOW_CLOCK is not set
- CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-
- #
- # Processor Type
-@@ -192,6 +234,7 @@
- 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
-@@ -201,7 +244,7 @@
- #
- # Processor Features
- #
--# CONFIG_ARM_THUMB is not set
-+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
-@@ -218,25 +261,37 @@
- #
- # Kernel Features
- #
--# CONFIG_TICK_ONESHOT is not set
-+# 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 is not set
- CONFIG_HZ=100
--# CONFIG_AEABI is not set
--# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_SPARSEMEM_STATIC is not set
--# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-+CONFIG_PAGEFLAGS_EXTENDED=y
- CONFIG_SPLIT_PTLOCK_CPUS=4096
--# CONFIG_RESOURCES_64BIT is not set
--CONFIG_ZONE_DMA_FLAG=1
--CONFIG_BOUNCE=y
-+# CONFIG_PHYS_ADDR_T_64BIT is not set
-+CONFIG_ZONE_DMA_FLAG=0
- CONFIG_VIRT_TO_BUS=y
--# CONFIG_LEDS is not set
-+CONFIG_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
- CONFIG_ALIGNMENT_TRAP=y
-
- #
-@@ -249,6 +304,11 @@
- # CONFIG_KEXEC is not set
-
- #
-+# CPU Power Management
-+#
-+# CONFIG_CPU_IDLE is not set
-+
-+#
- # Floating point emulation
- #
-
-@@ -264,19 +324,21 @@
- # 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
--# CONFIG_ARTHUR is not set
-
- #
- # Power management options
- #
--# CONFIG_PM is not set
--CONFIG_SUSPEND_UP_POSSIBLE=y
--
--#
--# Networking
--#
-+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
-
- #
-@@ -287,15 +349,13 @@
- CONFIG_UNIX=y
- # CONFIG_NET_KEY is not set
- CONFIG_INET=y
--# CONFIG_IP_MULTICAST is not set
-+CONFIG_IP_MULTICAST=y
- # CONFIG_IP_ADVANCED_ROUTER is not set
- CONFIG_IP_FIB_HASH=y
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_IP_PNP is not set
- # CONFIG_NET_IPIP is not set
- # CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
- # CONFIG_ARPD is not set
- # CONFIG_SYN_COOKIES is not set
- # CONFIG_INET_AH is not set
-@@ -307,15 +367,12 @@
- # CONFIG_INET_XFRM_MODE_TUNNEL is not set
- # CONFIG_INET_XFRM_MODE_BEET is not set
- # CONFIG_INET_LRO is not set
--CONFIG_INET_DIAG=y
--CONFIG_INET_TCP_DIAG=y
-+# CONFIG_INET_DIAG is not set
- # 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_INET6_XFRM_TUNNEL is not set
--# CONFIG_INET6_TUNNEL is not set
- # CONFIG_NETWORK_SECMARK is not set
- # CONFIG_NETFILTER is not set
- # CONFIG_IP_DCCP is not set
-@@ -323,6 +380,7 @@
- # 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
-@@ -332,24 +390,40 @@
- # CONFIG_LAPB is not set
- # CONFIG_ECONET is not set
- # CONFIG_WAN_ROUTER is not set
-+# CONFIG_PHONET 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 is not set
- # CONFIG_AF_RXRPC is not set
--
--#
--# Wireless
--#
--# CONFIG_CFG80211 is not set
--# CONFIG_WIRELESS_EXT is not set
--# CONFIG_MAC80211 is not set
--# CONFIG_IEEE80211 is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# CONFIG_WIMAX is not set
- # CONFIG_RFKILL is not set
- # CONFIG_NET_9P is not set
-
-@@ -363,27 +437,130 @@
- CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- CONFIG_STANDALONE=y
- CONFIG_PREVENT_FIRMWARE_BUILD=y
--# CONFIG_FW_LOADER is not set
--# CONFIG_DEBUG_DRIVER is not set
--# CONFIG_DEBUG_DEVRES is not set
-+CONFIG_FW_LOADER=y
-+CONFIG_FIRMWARE_IN_KERNEL=y
-+CONFIG_EXTRA_FIRMWARE=""
- # CONFIG_SYS_HYPERVISOR is not set
- # CONFIG_CONNECTOR is not set
--# CONFIG_MTD 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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND 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 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_UB is not set
- CONFIG_BLK_DEV_RAM=y
--CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_COUNT=4
- CONFIG_BLK_DEV_RAM_SIZE=8192
--CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-+# CONFIG_BLK_DEV_XIP is not set
- # CONFIG_CDROM_PKTCDVD is not set
- # CONFIG_ATA_OVER_ETH is not set
- CONFIG_MISC_DEVICES=y
--# CONFIG_EEPROM_93CX6 is not set
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
- CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+CONFIG_EEPROM_93CX6=m
-+CONFIG_HAVE_IDE=y
-+# CONFIG_IDE is not set
-
- #
- # SCSI device support
-@@ -422,13 +599,13 @@
- # 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_SCSI_DEBUG is not set
-+# CONFIG_SCSI_LOWLEVEL 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_NETDEVICES_MULTIQUEUE is not set
-+# CONFIG_COMPAT_NET_DEV_OPS is not set
- # CONFIG_DUMMY is not set
- # CONFIG_BONDING is not set
- # CONFIG_MACVLAN is not set
-@@ -441,7 +618,7 @@
- # MII PHY device drivers
- #
- # CONFIG_MARVELL_PHY is not set
--# CONFIG_DAVICOM_PHY is not set
-+CONFIG_DAVICOM_PHY=y
- # CONFIG_QSEMI_PHY is not set
- # CONFIG_LXT_PHY is not set
- # CONFIG_CICADA_PHY is not set
-@@ -449,27 +626,72 @@
- # CONFIG_SMSC_PHY is not set
- # CONFIG_BROADCOM_PHY is not set
- # CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
- # CONFIG_FIXED_PHY is not set
- # CONFIG_MDIO_BITBANG is not set
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=y
- CONFIG_MACB=y
-+CONFIG_MACB_TX_SRAM=y
- # CONFIG_AX88796 is not set
- # CONFIG_SMC91X is not set
- # CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000=y
--CONFIG_NETDEV_10000=y
-+# CONFIG_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-
- #
- # Wireless LAN
- #
- # CONFIG_WLAN_PRE80211 is not set
--# CONFIG_WLAN_80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+# CONFIG_LIBERTAS_SPI is not set
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-
- #
- # USB Network Adapters
-@@ -482,7 +704,6 @@
- # CONFIG_WAN is not set
- # CONFIG_PPP is not set
- # CONFIG_SLIP is not set
--# CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
- # CONFIG_NETPOLL is not set
- # CONFIG_NET_POLL_CONTROLLER is not set
-@@ -493,23 +714,30 @@
- #
- CONFIG_INPUT=y
- # CONFIG_INPUT_FF_MEMLESS is not set
--# CONFIG_INPUT_POLLDEV is not set
-+CONFIG_INPUT_POLLDEV=m
-
- #
- # Userland interfaces
- #
- CONFIG_INPUT_MOUSEDEV=y
- # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
--CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
--CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
- # CONFIG_INPUT_JOYDEV is not set
--# CONFIG_INPUT_EVDEV is not set
-+CONFIG_INPUT_EVDEV=y
- # CONFIG_INPUT_EVBUG is not set
-
- #
- # Input Device Drivers
- #
--# CONFIG_INPUT_KEYBOARD is not set
-+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=y
- # CONFIG_INPUT_MOUSE is not set
- # CONFIG_INPUT_JOYSTICK is not set
- # CONFIG_INPUT_TABLET is not set
-@@ -519,16 +747,20 @@
- #
- # Hardware I/O ports
- #
--# CONFIG_SERIO is not set
-+CONFIG_SERIO=y
-+CONFIG_SERIO_SERPORT=y
-+# CONFIG_SERIO_RAW 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
-
- #
-@@ -541,96 +773,98 @@
- #
- CONFIG_SERIAL_ATMEL=y
- CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
- # CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
- CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
- CONFIG_LEGACY_PTYS=y
--CONFIG_LEGACY_PTY_COUNT=256
-+CONFIG_LEGACY_PTY_COUNT=4
- # CONFIG_IPMI_HANDLER is not set
--# CONFIG_HW_RANDOM is not set
--# CONFIG_NVRAM is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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 is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_MASTER=y
-
- #
--# I2C Algorithms
-+# SPI Master Controller Drivers
- #
--CONFIG_I2C_ALGOBIT=y
--# CONFIG_I2C_ALGOPCF is not set
--# CONFIG_I2C_ALGOPCA is not set
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-
- #
--# I2C Hardware Bus support
-+# SPI Protocol Masters
- #
--CONFIG_I2C_GPIO=y
--# CONFIG_I2C_OCORES is not set
--# CONFIG_I2C_PARPORT_LIGHT is not set
--# CONFIG_I2C_SIMTEC is not set
--# CONFIG_I2C_TAOS_EVM is not set
--# CONFIG_I2C_STUB is not set
--# CONFIG_I2C_TINY_USB is not set
--# CONFIG_I2C_PCA is not set
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-
- #
--# Miscellaneous I2C Chip support
-+# Memory mapped GPIO expanders:
- #
--# CONFIG_SENSORS_DS1337 is not set
--# CONFIG_SENSORS_DS1374 is not set
--# CONFIG_DS1682 is not set
--# CONFIG_EEPROM_LEGACY is not set
--# CONFIG_SENSORS_PCF8574 is not set
--# CONFIG_SENSORS_PCA9539 is not set
--# CONFIG_SENSORS_PCF8591 is not set
--# CONFIG_SENSORS_MAX6875 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
-
- #
--# SPI support
-+# I2C GPIO expanders:
- #
--# CONFIG_SPI is not set
--# CONFIG_SPI_MASTER is not set
--# CONFIG_W1 is not set
--# CONFIG_POWER_SUPPLY is not set
--# CONFIG_HWMON is not set
--CONFIG_WATCHDOG=y
--CONFIG_WATCHDOG_NOWAYOUT=y
-
- #
--# Watchdog Device Drivers
-+# PCI GPIO expanders:
- #
--# CONFIG_SOFT_WATCHDOG is not set
--CONFIG_AT91SAM9X_WATCHDOG=y
-
- #
--# USB-based Watchdog Cards
-+# SPI GPIO expanders:
- #
--# CONFIG_USBPCWATCHDOG is not set
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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_POSSIBLE=y
- # 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_MFD_TMIO is not set
-+# CONFIG_MFD_T7L66XB is not set
-+# CONFIG_MFD_TC6387XB is not set
-+# CONFIG_MFD_TC6393XB is not set
-
- #
- # Multimedia devices
- #
-+
-+#
-+# Multimedia core support
-+#
- # CONFIG_VIDEO_DEV is not set
- # CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
- # CONFIG_DAB is not set
-
- #
-@@ -651,11 +885,40 @@
- #
- # CONFIG_VGA_CONSOLE is not set
- CONFIG_DUMMY_CONSOLE=y
--
--#
--# Sound
--#
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+# CONFIG_SND_ATMEL_AC97C is not set
-+CONFIG_SND_SPI=y
-+CONFIG_SND_AT73C213=y
-+CONFIG_SND_AT73C213_TARGET_BITRATE=48000
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
- CONFIG_HID_SUPPORT=y
- CONFIG_HID=y
- # CONFIG_HID_DEBUG is not set
-@@ -665,63 +928,76 @@
- # USB Input Devices
- #
- # CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-
- #
--# USB HID Boot Protocol drivers
-+# Special HID drivers
- #
--# CONFIG_USB_KBD is not set
--# CONFIG_USB_MOUSE is not set
- CONFIG_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
- # CONFIG_USB_ARCH_HAS_EHCI is not set
- CONFIG_USB=y
- # CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
- #
- # Miscellaneous USB options
- #
- CONFIG_USB_DEVICEFS=y
--CONFIG_USB_DEVICE_CLASS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
- # CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-
- #
- # USB Host Controller Drivers
- #
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
- # CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
- CONFIG_USB_OHCI_HCD=y
- # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
- # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
- CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_SL811_HCD is not set
- # CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-
- #
- # USB Device Class drivers
- #
- # CONFIG_USB_ACM is not set
- # CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
- #
-
- #
--# may also be needed; see USB_STORAGE Help for more information
-+# also be needed; see USB_STORAGE Help for more info
- #
- CONFIG_USB_STORAGE=y
--CONFIG_USB_STORAGE_DEBUG=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
- # CONFIG_USB_STORAGE_DATAFAB is not set
- # CONFIG_USB_STORAGE_FREECOM is not set
- # CONFIG_USB_STORAGE_ISD200 is not set
--# CONFIG_USB_STORAGE_DPCM is not set
- # CONFIG_USB_STORAGE_USBAT is not set
- # CONFIG_USB_STORAGE_SDDR09 is not set
- # CONFIG_USB_STORAGE_SDDR55 is not set
- # CONFIG_USB_STORAGE_JUMPSHOT is not set
- # CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
- # CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
- # CONFIG_USB_LIBUSUAL is not set
-
- #
-@@ -729,15 +1005,10 @@
- #
- # CONFIG_USB_MDC800 is not set
- # CONFIG_USB_MICROTEK is not set
--CONFIG_USB_MON=y
-
- #
- # USB port drivers
- #
--
--#
--# USB Serial Converter support
--#
- # CONFIG_USB_SERIAL is not set
-
- #
-@@ -746,7 +1017,7 @@
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
- # CONFIG_USB_ADUTUX is not set
--# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_SEVSEG is not set
- # CONFIG_USB_RIO500 is not set
- # CONFIG_USB_LEGOTOWER is not set
- # CONFIG_USB_LCD is not set
-@@ -754,7 +1025,6 @@
- # CONFIG_USB_LED is not set
- # CONFIG_USB_CYPRESS_CY7C63 is not set
- # CONFIG_USB_CYTHERM is not set
--# CONFIG_USB_PHIDGET is not set
- # CONFIG_USB_IDMOUSE is not set
- # CONFIG_USB_FTDI_ELAN is not set
- # CONFIG_USB_APPLEDISPLAY is not set
-@@ -762,41 +1032,90 @@
- # CONFIG_USB_TRANCEVIBRATOR is not set
- # CONFIG_USB_IOWARRIOR is not set
- # CONFIG_USB_TEST is not set
--
--#
--# USB DSL modem support
--#
--
--#
--# USB Gadget Support
--#
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
- CONFIG_USB_GADGET=y
--# CONFIG_USB_GADGET_DEBUG is not set
- # CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
- CONFIG_USB_GADGET_SELECTED=y
--# CONFIG_USB_GADGET_AMD5536UDC is not set
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
- # CONFIG_USB_GADGET_ATMEL_USBA is not set
- # CONFIG_USB_GADGET_FSL_USB2 is not set
--# CONFIG_USB_GADGET_NET2280 is not set
--# CONFIG_USB_GADGET_PXA2XX is not set
--# CONFIG_USB_GADGET_M66592 is not set
--# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_LH7A40X is not set
- # CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
- # CONFIG_USB_GADGET_S3C2410 is not set
--CONFIG_USB_GADGET_AT91=y
--CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
- # CONFIG_USB_GADGET_DUALSPEED is not set
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ETH is not set
--CONFIG_USB_GADGETFS=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
- CONFIG_USB_FILE_STORAGE=m
- # CONFIG_USB_FILE_STORAGE_TEST is not set
- CONFIG_USB_G_SERIAL=m
- # CONFIG_USB_MIDI_GADGET is not set
--# CONFIG_MMC is not set
--# CONFIG_NEW_LEDS is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
- CONFIG_RTC_LIB=y
- CONFIG_RTC_CLASS=y
- CONFIG_RTC_HCTOSYS=y
-@@ -813,38 +1132,42 @@
- # 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
--
--#
- # SPI RTC drivers
- #
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-
- #
- # 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_STK17TA8 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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
-@@ -853,24 +1176,28 @@
- # CONFIG_EXT2_FS_XATTR is not set
- # CONFIG_EXT2_FS_XIP is not set
- # CONFIG_EXT3_FS is not set
--# CONFIG_EXT4DEV_FS is not set
-+# CONFIG_EXT4_FS is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
- # CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
- # CONFIG_XFS_FS is not set
--# CONFIG_GFS2_FS is not set
- # CONFIG_OCFS2_FS is not set
--# CONFIG_MINIX_FS is not set
--# CONFIG_ROMFS_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_DNOTIFY=y
- CONFIG_INOTIFY=y
- CONFIG_INOTIFY_USER=y
- # CONFIG_QUOTA is not set
--CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
- # CONFIG_FUSE_FS is not set
-
- #
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
- # CD-ROM/DVD Filesystems
- #
- # CONFIG_ISO9660_FS is not set
-@@ -880,7 +1207,7 @@
- # DOS/FAT/NT Filesystems
- #
- CONFIG_FAT_FS=y
--# CONFIG_MSDOS_FS is not set
-+CONFIG_MSDOS_FS=y
- CONFIG_VFAT_FS=y
- CONFIG_FAT_DEFAULT_CODEPAGE=437
- CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-@@ -891,15 +1218,13 @@
- #
- 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
--
--#
--# Miscellaneous filesystems
--#
-+CONFIG_MISC_FILESYSTEMS=y
- # CONFIG_ADFS_FS is not set
- # CONFIG_AFFS_FS is not set
- # CONFIG_HFS_FS is not set
-@@ -907,15 +1232,42 @@
- # CONFIG_BEFS_FS is not set
- # CONFIG_BFS_FS is not set
- # CONFIG_EFS_FS is not set
--CONFIG_CRAMFS=y
-+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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
- # 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 is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
-+# CONFIG_NFS_V4 is not set
- # CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
- # CONFIG_CIFS is not set
- # CONFIG_NCP_FS is not set
-@@ -963,14 +1315,11 @@
- # 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 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_NLS_UTF8=y
- # CONFIG_DLM is not set
--CONFIG_INSTRUMENTATION=y
--# CONFIG_PROFILING is not set
--# CONFIG_MARKERS is not set
-
- #
- # Kernel hacking
-@@ -978,63 +1327,161 @@
- # CONFIG_PRINTK_TIME is not set
- CONFIG_ENABLE_WARN_DEPRECATED=y
- CONFIG_ENABLE_MUST_CHECK=y
-+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_SCHED_DEBUG=y
--# CONFIG_SCHEDSTATS is not set
--# CONFIG_TIMER_STATS is not set
--# CONFIG_DEBUG_SLAB 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_KERNEL is not set
- CONFIG_DEBUG_BUGVERBOSE=y
--# CONFIG_DEBUG_INFO is not set
--# CONFIG_DEBUG_VM is not set
--# CONFIG_DEBUG_LIST is not set
--# CONFIG_DEBUG_SG is not set
--CONFIG_FRAME_POINTER=y
--CONFIG_FORCED_INLINING=y
--# CONFIG_BOOT_PRINTK_DELAY is not set
--# CONFIG_RCU_TORTURE_TEST is not set
--# CONFIG_FAULT_INJECTION is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
- CONFIG_DEBUG_USER=y
--# CONFIG_DEBUG_ERRORS is not set
--CONFIG_DEBUG_LL=y
--# CONFIG_DEBUG_ICEDCC 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 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-
- #
- # Library routines
- #
- CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
- # CONFIG_CRC_CCITT is not set
- # CONFIG_CRC16 is not set
--# CONFIG_CRC_ITU_T is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
- CONFIG_CRC32=y
- # CONFIG_CRC7 is not set
- # CONFIG_LIBCRC32C is not set
- CONFIG_ZLIB_INFLATE=y
--CONFIG_PLIST=y
-+CONFIG_ZLIB_DEFLATE=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
- CONFIG_HAS_IOMEM=y
- CONFIG_HAS_IOPORT=y
- CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9rlek_defconfig
-===================================================================
---- linux-2.6.30.orig/arch/arm/configs/at91sam9rlek_defconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/arm/configs/at91sam9rlek_defconfig 2011-02-01 16:40:30.200115764 +0100
-@@ -1,17 +1,18 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.24-rc7
--# Tue Jan 8 22:24:14 2008
-+# Linux kernel version: 2.6.30
-+# Tue Oct 13 12:57:29 2009
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
- CONFIG_GENERIC_GPIO=y
--# CONFIG_GENERIC_TIME is not set
--# CONFIG_GENERIC_CLOCKEVENTS is not set
-+CONFIG_GENERIC_TIME=y
-+CONFIG_GENERIC_CLOCKEVENTS=y
- CONFIG_MMU=y
- # CONFIG_NO_IOPORT is not set
- 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
-@@ -21,7 +22,7 @@
- # CONFIG_ARCH_HAS_ILOG2_U64 is not set
- CONFIG_GENERIC_HWEIGHT=y
- CONFIG_GENERIC_CALIBRATE_DELAY=y
--CONFIG_ZONE_DMA=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
- CONFIG_VECTORS_BASE=0xffff0000
- CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-@@ -39,57 +40,82 @@
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- # CONFIG_TASKSTATS is not set
--# CONFIG_USER_NS is not set
--# CONFIG_PID_NS 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 is not set
- CONFIG_LOG_BUF_SHIFT=14
-+# CONFIG_GROUP_SCHED is not set
- # CONFIG_CGROUPS is not set
--CONFIG_FAIR_GROUP_SCHED=y
--CONFIG_FAIR_USER_SCHED=y
--# CONFIG_FAIR_CGROUP_SCHED is not set
- CONFIG_SYSFS_DEPRECATED=y
-+CONFIG_SYSFS_DEPRECATED_V2=y
- # CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
- CONFIG_BLK_DEV_INITRD=y
- CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
- CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
- # CONFIG_EMBEDDED is not set
- CONFIG_UID16=y
- CONFIG_SYSCTL_SYSCALL=y
- CONFIG_KALLSYMS=y
--# CONFIG_KALLSYMS_ALL is not set
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
- CONFIG_HOTPLUG=y
- CONFIG_PRINTK=y
- CONFIG_BUG=y
- CONFIG_ELF_CORE=y
- CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
--CONFIG_ANON_INODES=y
- CONFIG_EPOLL=y
- CONFIG_SIGNALFD=y
-+CONFIG_TIMERFD=y
- CONFIG_EVENTFD=y
- CONFIG_SHMEM=y
-+CONFIG_AIO=y
- CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# CONFIG_SLOW_WORK is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
- CONFIG_SLABINFO=y
- CONFIG_RT_MUTEXES=y
--# CONFIG_TINY_SHMEM is not set
- 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_KMOD=y
- CONFIG_BLOCK=y
- # CONFIG_LBD is not set
--# CONFIG_BLK_DEV_IO_TRACE is not set
--# CONFIG_LSF is not set
- # CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-
- #
- # IO Schedulers
-@@ -103,6 +129,7 @@
- # CONFIG_DEFAULT_CFQ is not set
- # CONFIG_DEFAULT_NOOP is not set
- CONFIG_DEFAULT_IOSCHED="anticipatory"
-+CONFIG_FREEZER=y
-
- #
- # System Type
-@@ -112,11 +139,10 @@
- # CONFIG_ARCH_REALVIEW is not set
- # CONFIG_ARCH_VERSATILE is not set
- CONFIG_ARCH_AT91=y
--# CONFIG_ARCH_CLPS7500 is not set
- # CONFIG_ARCH_CLPS711X is not set
--# CONFIG_ARCH_CO285 is not set
- # CONFIG_ARCH_EBSA110 is not set
- # CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
- # CONFIG_ARCH_FOOTBRIDGE is not set
- # CONFIG_ARCH_NETX is not set
- # CONFIG_ARCH_H720X is not set
-@@ -128,26 +154,26 @@
- # 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_KS8695 is not set
- # CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
- # CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
- # CONFIG_ARCH_PNX4008 is not set
- # CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
- # CONFIG_ARCH_OMAP is not set
--
--#
--# Boot options
--#
--
--#
--# Power management
--#
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-
- #
- # Atmel AT91 System-on-Chip
-@@ -155,8 +181,13 @@
- # CONFIG_ARCH_AT91RM9200 is not set
- # CONFIG_ARCH_AT91SAM9260 is not set
- # CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
- # CONFIG_ARCH_AT91SAM9263 is not set
- CONFIG_ARCH_AT91SAM9RL=y
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
- # CONFIG_ARCH_AT91X40 is not set
- CONFIG_AT91_PMC_UNIT=y
-
-@@ -173,8 +204,15 @@
- # AT91 Feature Selections
- #
- CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
--# CONFIG_ATMEL_TCLIB is not set
-+# CONFIG_AT91_SLOW_CLOCK is not set
- CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-
- #
- # Processor Type
-@@ -183,6 +221,7 @@
- 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
-@@ -192,7 +231,7 @@
- #
- # Processor Features
- #
--# CONFIG_ARM_THUMB is not set
-+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
-@@ -209,25 +248,37 @@
- #
- # Kernel Features
- #
--# CONFIG_TICK_ONESHOT is not set
-+# 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 is not set
- CONFIG_HZ=100
--# CONFIG_AEABI is not set
--# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_SPARSEMEM_STATIC is not set
--# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-+CONFIG_PAGEFLAGS_EXTENDED=y
- CONFIG_SPLIT_PTLOCK_CPUS=4096
--# CONFIG_RESOURCES_64BIT is not set
--CONFIG_ZONE_DMA_FLAG=1
--CONFIG_BOUNCE=y
-+# CONFIG_PHYS_ADDR_T_64BIT is not set
-+CONFIG_ZONE_DMA_FLAG=0
- CONFIG_VIRT_TO_BUS=y
--# CONFIG_LEDS is not set
-+CONFIG_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
- CONFIG_ALIGNMENT_TRAP=y
-
- #
-@@ -235,11 +286,16 @@
- #
- CONFIG_ZBOOT_ROM_TEXT=0x0
- CONFIG_ZBOOT_ROM_BSS=0x0
--CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,17105363 root=/dev/ram0 rw"
-+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
- # CONFIG_XIP_KERNEL is not set
- # CONFIG_KEXEC is not set
-
- #
-+# CPU Power Management
-+#
-+# CONFIG_CPU_IDLE is not set
-+
-+#
- # Floating point emulation
- #
-
-@@ -255,32 +311,62 @@
- # 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
--# CONFIG_ARTHUR is not set
-
- #
- # Power management options
- #
--# CONFIG_PM is not set
--CONFIG_SUSPEND_UP_POSSIBLE=y
--
--#
--# Networking
--#
-+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 is not set
-+CONFIG_PACKET=y
-+# CONFIG_PACKET_MMAP is not set
- CONFIG_UNIX=y
- # CONFIG_NET_KEY is not set
--# CONFIG_INET is not set
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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
-@@ -288,24 +374,42 @@
- # 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_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 is not set
--
--#
--# Wireless
--#
--# CONFIG_CFG80211 is not set
--# CONFIG_WIRELESS_EXT is not set
--# CONFIG_MAC80211 is not set
--# CONFIG_IEEE80211 is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# CONFIG_WIMAX is not set
- # CONFIG_RFKILL is not set
- # CONFIG_NET_9P is not set
-
-@@ -319,18 +423,20 @@
- CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- CONFIG_STANDALONE=y
- CONFIG_PREVENT_FIRMWARE_BUILD=y
--# CONFIG_FW_LOADER is not set
--# CONFIG_DEBUG_DRIVER is not set
--# CONFIG_DEBUG_DEVRES is not set
-+CONFIG_FW_LOADER=y
-+CONFIG_FIRMWARE_IN_KERNEL=y
-+CONFIG_EXTRA_FIRMWARE=""
- # CONFIG_SYS_HYPERVISOR is not set
- # CONFIG_CONNECTOR is not set
- CONFIG_MTD=y
- # CONFIG_MTD_DEBUG is not set
--CONFIG_MTD_CONCAT=y
-+# CONFIG_MTD_CONCAT is not set
- CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_TESTS is not set
- # CONFIG_MTD_REDBOOT_PARTS is not set
- CONFIG_MTD_CMDLINE_PARTS=y
- # CONFIG_MTD_AFS_PARTS is not set
-+# CONFIG_MTD_AR7_PARTS is not set
-
- #
- # User Modules And Translation Layers
-@@ -374,6 +480,8 @@
- # Self-contained MTD device drivers
- #
- CONFIG_MTD_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
- # CONFIG_MTD_M25P80 is not set
- # CONFIG_MTD_SLRAM is not set
- # CONFIG_MTD_PHRAM is not set
-@@ -390,14 +498,23 @@
- # CONFIG_MTD_NAND_VERIFY_WRITE is not set
- # 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
- # CONFIG_MTD_NAND_NANDSIM is not set
- # CONFIG_MTD_NAND_PLATFORM is not set
- # CONFIG_MTD_ONENAND is not set
-
- #
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
- # UBI - Unsorted block images
- #
- # CONFIG_MTD_UBI is not set
-@@ -409,13 +526,26 @@
- # CONFIG_BLK_DEV_NBD is not set
- CONFIG_BLK_DEV_RAM=y
- CONFIG_BLK_DEV_RAM_COUNT=4
--CONFIG_BLK_DEV_RAM_SIZE=24576
--CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
- # CONFIG_CDROM_PKTCDVD is not set
- # CONFIG_ATA_OVER_ETH is not set
- CONFIG_MISC_DEVICES=y
-+CONFIG_ATMEL_PWM=y
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+# CONFIG_ATMEL_SSC is not set
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
- # CONFIG_EEPROM_93CX6 is not set
--CONFIG_ATMEL_SSC=y
-+CONFIG_HAVE_IDE=y
-+# CONFIG_IDE is not set
-
- #
- # SCSI device support
-@@ -454,11 +584,49 @@
- # 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_SCSI_DEBUG is not set
-+# CONFIG_SCSI_LOWLEVEL 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 is not set
-+CONFIG_NETDEVICES=y
-+# CONFIG_COMPAT_NET_DEV_OPS is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+# CONFIG_NET_ETHERNET is not set
-+# CONFIG_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_SDIO=m
-+# CONFIG_LIBERTAS_SPI is not set
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+# CONFIG_RT2X00 is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- # CONFIG_ISDN is not set
-
- #
-@@ -473,8 +641,8 @@
- #
- CONFIG_INPUT_MOUSEDEV=y
- # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
--CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
--CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
- # CONFIG_INPUT_JOYDEV is not set
- CONFIG_INPUT_EVDEV=y
- # CONFIG_INPUT_EVBUG is not set
-@@ -482,23 +650,36 @@
- #
- # Input Device Drivers
- #
--# CONFIG_INPUT_KEYBOARD is not set
-+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=y
- # CONFIG_INPUT_MOUSE is not set
- # CONFIG_INPUT_JOYSTICK is not set
- # CONFIG_INPUT_TABLET is not set
- CONFIG_INPUT_TOUCHSCREEN=y
- # CONFIG_TOUCHSCREEN_ADS7846 is not set
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
- # CONFIG_TOUCHSCREEN_FUJITSU is not set
- # CONFIG_TOUCHSCREEN_GUNZE is not set
- # CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
- # CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
- # CONFIG_TOUCHSCREEN_MK712 is not set
- # CONFIG_TOUCHSCREEN_PENMOUNT is not set
- # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
- # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
- CONFIG_TOUCHSCREEN_ATMEL_TSADCC=y
--# CONFIG_TOUCHSCREEN_UCB1400 is not set
-+# CONFIG_TOUCHSCREEN_WM97XX is not set
- # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
- # CONFIG_INPUT_MISC is not set
-
- #
-@@ -511,9 +692,11 @@
- # 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
-
- #
-@@ -526,103 +709,99 @@
- #
- CONFIG_SERIAL_ATMEL=y
- CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
- # CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
- CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
- CONFIG_LEGACY_PTYS=y
--CONFIG_LEGACY_PTY_COUNT=256
-+CONFIG_LEGACY_PTY_COUNT=4
- # CONFIG_IPMI_HANDLER is not set
--# CONFIG_HW_RANDOM is not set
--# CONFIG_NVRAM is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM 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 is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_MASTER=y
-
- #
--# I2C Algorithms
-+# SPI Master Controller Drivers
- #
--CONFIG_I2C_ALGOBIT=y
--# CONFIG_I2C_ALGOPCF is not set
--# CONFIG_I2C_ALGOPCA is not set
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-
- #
--# I2C Hardware Bus support
-+# SPI Protocol Masters
- #
--CONFIG_I2C_GPIO=y
--# CONFIG_I2C_OCORES is not set
--# CONFIG_I2C_PARPORT_LIGHT is not set
--# CONFIG_I2C_SIMTEC is not set
--# CONFIG_I2C_TAOS_EVM is not set
--# CONFIG_I2C_STUB is not set
--# CONFIG_I2C_PCA is not set
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-
- #
--# Miscellaneous I2C Chip support
-+# Memory mapped GPIO expanders:
- #
--# CONFIG_SENSORS_DS1337 is not set
--# CONFIG_SENSORS_DS1374 is not set
--# CONFIG_DS1682 is not set
--# CONFIG_EEPROM_LEGACY is not set
--# CONFIG_SENSORS_PCF8574 is not set
--# CONFIG_SENSORS_PCA9539 is not set
--# CONFIG_SENSORS_PCF8591 is not set
--# CONFIG_SENSORS_MAX6875 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
-
- #
--# SPI support
-+# I2C GPIO expanders:
- #
--CONFIG_SPI=y
--# CONFIG_SPI_DEBUG is not set
--CONFIG_SPI_MASTER=y
-
- #
--# SPI Master Controller Drivers
-+# PCI GPIO expanders:
- #
--CONFIG_SPI_ATMEL=y
--# CONFIG_SPI_BITBANG is not set
-
- #
--# SPI Protocol Masters
-+# SPI GPIO expanders:
- #
--# CONFIG_EEPROM_AT25 is not set
--# CONFIG_SPI_SPIDEV is not set
--# CONFIG_SPI_TLE62X0 is not set
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
- # CONFIG_W1 is not set
- # CONFIG_POWER_SUPPLY is not set
- # CONFIG_HWMON is not set
--CONFIG_WATCHDOG=y
--CONFIG_WATCHDOG_NOWAYOUT=y
--
--#
--# Watchdog Device Drivers
--#
--# CONFIG_SOFT_WATCHDOG is not set
--CONFIG_AT91SAM9X_WATCHDOG=y
-+# 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_POSSIBLE=y
- # 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_UCB1400_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
-
- #
- # Multimedia devices
- #
-+
-+#
-+# Multimedia core support
-+#
- # CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
- # CONFIG_DAB is not set
-
- #
-@@ -633,6 +812,7 @@
- CONFIG_FB=y
- # CONFIG_FIRMWARE_EDID is not set
- # CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
- CONFIG_FB_CFB_FILLRECT=y
- CONFIG_FB_CFB_COPYAREA=y
- CONFIG_FB_CFB_IMAGEBLIT=y
-@@ -640,8 +820,8 @@
- # CONFIG_FB_SYS_FILLRECT is not set
- # CONFIG_FB_SYS_COPYAREA is not set
- # CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
- # CONFIG_FB_SYS_FOPS is not set
--CONFIG_FB_DEFERRED_IO=y
- # CONFIG_FB_SVGALIB is not set
- # CONFIG_FB_MACMODES is not set
- # CONFIG_FB_BACKLIGHT is not set
-@@ -655,7 +835,15 @@
- # CONFIG_FB_S1D13XXX is not set
- CONFIG_FB_ATMEL=y
- # CONFIG_FB_VIRTUAL is not set
--# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_ATMEL_PWM is not set
-+# CONFIG_BACKLIGHT_GENERIC is not set
-
- #
- # Display device support
-@@ -669,46 +857,139 @@
- CONFIG_DUMMY_CONSOLE=y
- # CONFIG_FRAMEBUFFER_CONSOLE is not set
- # CONFIG_LOGO is not set
--
--#
--# Sound
--#
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+CONFIG_SND_VMASTER=y
-+CONFIG_SND_AC97_CODEC=y
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+CONFIG_SND_ATMEL_AC97C=y
-+# CONFIG_SND_SPI is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_AC97_BUS=y
- 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_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
- # CONFIG_USB_ARCH_HAS_EHCI is not set
- # CONFIG_USB is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
- #
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+# CONFIG_USB_GADGET_AT91 is not set
-+CONFIG_USB_GADGET_ATMEL_USBA=y
-+CONFIG_USB_ATMEL_USBA=y
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+CONFIG_USB_GADGET_DUALSPEED=y
-+# CONFIG_USB_ZERO is not set
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
-+CONFIG_USB_FILE_STORAGE=m
-+# CONFIG_USB_FILE_STORAGE_TEST is not set
-+CONFIG_USB_G_SERIAL=m
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-
- #
--# USB Gadget Support
-+# OTG and related infrastructure
- #
--# CONFIG_USB_GADGET is not set
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
- CONFIG_MMC=y
- # CONFIG_MMC_DEBUG is not set
- # CONFIG_MMC_UNSAFE_RESUME is not set
-
- #
--# MMC/SD Card Drivers
-+# MMC/SD/SDIO Card Drivers
- #
- CONFIG_MMC_BLOCK=y
- CONFIG_MMC_BLOCK_BOUNCE=y
--# CONFIG_SDIO_UART is not set
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-
- #
--# MMC/SD Host Controller Drivers
-+# MMC/SD/SDIO Host Controller Drivers
- #
-+# CONFIG_MMC_SDHCI is not set
- CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
- # CONFIG_MMC_SPI is not set
--# CONFIG_NEW_LEDS is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_ATMEL_PWM=y
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
- CONFIG_RTC_LIB=y
- CONFIG_RTC_CLASS=y
- CONFIG_RTC_HCTOSYS=y
-@@ -725,40 +1006,56 @@
- # 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
--
--#
- # SPI RTC drivers
- #
--# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
- # CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-
- #
- # 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_STK17TA8 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_AT91RM9200 is not set
- CONFIG_RTC_DRV_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+CONFIG_DMADEVICES=y
-+
-+#
-+# DMA Devices
-+#
-+CONFIG_AT_HDMAC=m
-+CONFIG_DMA_ENGINE=y
-+
-+#
-+# DMA Clients
-+#
-+# CONFIG_NET_DMA is not set
-+# CONFIG_ASYNC_TX_DMA is not set
-+CONFIG_DMATEST=m
-+# CONFIG_AUXDISPLAY is not set
-+# CONFIG_REGULATOR is not set
-+# CONFIG_UIO is not set
-+# CONFIG_STAGING is not set
-
- #
- # File systems
-@@ -767,24 +1064,28 @@
- # CONFIG_EXT2_FS_XATTR is not set
- # CONFIG_EXT2_FS_XIP is not set
- # CONFIG_EXT3_FS is not set
--# CONFIG_EXT4DEV_FS is not set
-+# CONFIG_EXT4_FS is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
- # CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
- # CONFIG_XFS_FS is not set
--# CONFIG_GFS2_FS is not set
- # CONFIG_OCFS2_FS is not set
--# CONFIG_MINIX_FS is not set
--# CONFIG_ROMFS_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+CONFIG_DNOTIFY=y
- CONFIG_INOTIFY=y
- CONFIG_INOTIFY_USER=y
- # CONFIG_QUOTA is not set
--CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
- # CONFIG_FUSE_FS is not set
-
- #
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
- # CD-ROM/DVD Filesystems
- #
- # CONFIG_ISO9660_FS is not set
-@@ -805,15 +1106,13 @@
- #
- 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
--
--#
--# Miscellaneous filesystems
--#
-+CONFIG_MISC_FILESYSTEMS=y
- # CONFIG_ADFS_FS is not set
- # CONFIG_AFFS_FS is not set
- # CONFIG_HFS_FS is not set
-@@ -821,14 +1120,47 @@
- # CONFIG_BEFS_FS is not set
- # CONFIG_BFS_FS is not set
- # CONFIG_EFS_FS is not set
--# CONFIG_JFFS2_FS is not set
--CONFIG_CRAMFS=y
-+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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
- # 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_CODA_FS is not set
-+# CONFIG_AFS_FS is not set
-
- #
- # Partition Types
-@@ -875,9 +1207,7 @@
- # CONFIG_NLS_KOI8_R is not set
- # CONFIG_NLS_KOI8_U is not set
- CONFIG_NLS_UTF8=y
--CONFIG_INSTRUMENTATION=y
--# CONFIG_PROFILING is not set
--# CONFIG_MARKERS is not set
-+# CONFIG_DLM is not set
-
- #
- # Kernel hacking
-@@ -885,63 +1215,161 @@
- # CONFIG_PRINTK_TIME is not set
- CONFIG_ENABLE_WARN_DEPRECATED=y
- CONFIG_ENABLE_MUST_CHECK=y
-+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_SCHED_DEBUG=y
--# CONFIG_SCHEDSTATS is not set
--# CONFIG_TIMER_STATS is not set
--# CONFIG_DEBUG_SLAB 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_KERNEL is not set
- CONFIG_DEBUG_BUGVERBOSE=y
--CONFIG_DEBUG_INFO=y
--# CONFIG_DEBUG_VM is not set
--# CONFIG_DEBUG_LIST is not set
--# CONFIG_DEBUG_SG is not set
--CONFIG_FRAME_POINTER=y
--CONFIG_FORCED_INLINING=y
--# CONFIG_BOOT_PRINTK_DELAY is not set
--# CONFIG_RCU_TORTURE_TEST is not set
--# CONFIG_FAULT_INJECTION is not set
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
- CONFIG_DEBUG_USER=y
--# CONFIG_DEBUG_ERRORS is not set
--CONFIG_DEBUG_LL=y
--# CONFIG_DEBUG_ICEDCC 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 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-
- #
- # Library routines
- #
- CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
- # CONFIG_CRC_CCITT is not set
- # 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_PLIST=y
-+CONFIG_ZLIB_DEFLATE=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
- CONFIG_HAS_IOMEM=y
- CONFIG_HAS_IOPORT=y
- CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/include/sound/ac97_codec.h
-===================================================================
---- linux-2.6.30.orig/include/sound/ac97_codec.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/include/sound/ac97_codec.h 2011-02-01 16:40:30.177046291 +0100
-@@ -32,6 +32,9 @@
- #include "control.h"
- #include "info.h"
-
-+/* maximum number of devices on the AC97 bus */
-+#define AC97_BUS_MAX_DEVICES 4
-+
- /*
- * AC'97 codec registers
- */
-@@ -642,4 +645,10 @@
- /* ad hoc AC97 device driver access */
- extern struct bus_type ac97_bus_type;
-
-+/* AC97 platform_data adding function */
-+static inline void snd_ac97_dev_add_pdata(struct snd_ac97 *ac97, void *data)
-+{
-+ ac97->dev.platform_data = data;
-+}
-+
- #endif /* __SOUND_AC97_CODEC_H */
-Index: linux-2.6.30/include/sound/soc-dai.h
-===================================================================
---- linux-2.6.30.orig/include/sound/soc-dai.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/include/sound/soc-dai.h 2011-02-01 16:40:30.177046291 +0100
-@@ -27,9 +27,10 @@
- #define SND_SOC_DAIFMT_I2S 0 /* I2S mode */
- #define SND_SOC_DAIFMT_RIGHT_J 1 /* Right Justified mode */
- #define SND_SOC_DAIFMT_LEFT_J 2 /* Left Justified mode */
--#define SND_SOC_DAIFMT_DSP_A 3 /* L data msb after FRM LRC */
--#define SND_SOC_DAIFMT_DSP_B 4 /* L data msb during FRM LRC */
-+#define SND_SOC_DAIFMT_DSP_A 3 /* L data MSB after FRM LRC */
-+#define SND_SOC_DAIFMT_DSP_B 4 /* L data MSB during FRM LRC */
- #define SND_SOC_DAIFMT_AC97 5 /* AC97 */
-+#define SND_SOC_DAIFMT_PDM 6 /* Pulse density modulation */
-
- /* left and right justified also known as MSB and LSB respectively */
- #define SND_SOC_DAIFMT_MSB SND_SOC_DAIFMT_LEFT_J
-@@ -38,52 +39,34 @@
- /*
- * DAI Clock gating.
- *
-- * DAI bit clocks can be be gated (disabled) when not the DAI is not
-+ * DAI bit clocks can be be gated (disabled) when the DAI is not
- * sending or receiving PCM data in a frame. This can be used to save power.
- */
- #define SND_SOC_DAIFMT_CONT (0 << 4) /* continuous clock */
- #define SND_SOC_DAIFMT_GATED (1 << 4) /* clock is gated */
-
- /*
-- * DAI Left/Right Clocks.
-- *
-- * Specifies whether the DAI can support different samples for similtanious
-- * playback and capture. This usually requires a seperate physical frame
-- * clock for playback and capture.
-- */
--#define SND_SOC_DAIFMT_SYNC (0 << 5) /* Tx FRM = Rx FRM */
--#define SND_SOC_DAIFMT_ASYNC (1 << 5) /* Tx FRM ~ Rx FRM */
--
--/*
-- * TDM
-- *
-- * Time Division Multiplexing. Allows PCM data to be multplexed with other
-- * data on the DAI.
-- */
--#define SND_SOC_DAIFMT_TDM (1 << 6)
--
--/*
- * DAI hardware signal inversions.
- *
- * Specifies whether the DAI can also support inverted clocks for the specified
- * format.
- */
- #define SND_SOC_DAIFMT_NB_NF (0 << 8) /* normal bit clock + frame */
--#define SND_SOC_DAIFMT_NB_IF (1 << 8) /* normal bclk + inv frm */
--#define SND_SOC_DAIFMT_IB_NF (2 << 8) /* invert bclk + nor frm */
--#define SND_SOC_DAIFMT_IB_IF (3 << 8) /* invert bclk + frm */
-+#define SND_SOC_DAIFMT_NB_IF (1 << 8) /* normal BCLK + inv FRM */
-+#define SND_SOC_DAIFMT_IB_NF (2 << 8) /* invert BCLK + nor FRM */
-+#define SND_SOC_DAIFMT_IB_IF (3 << 8) /* invert BCLK + FRM */
-
- /*
- * DAI hardware clock masters.
- *
- * This is wrt the codec, the inverse is true for the interface
-- * i.e. if the codec is clk and frm master then the interface is
-+ * i.e. if the codec is clk and FRM master then the interface is
- * clk and frame slave.
- */
--#define SND_SOC_DAIFMT_CBM_CFM (0 << 12) /* codec clk & frm master */
--#define SND_SOC_DAIFMT_CBS_CFM (1 << 12) /* codec clk slave & frm master */
-+#define SND_SOC_DAIFMT_CBM_CFM (0 << 12) /* codec clk & FRM master */
-+#define SND_SOC_DAIFMT_CBS_CFM (1 << 12) /* codec clk slave & FRM master */
- #define SND_SOC_DAIFMT_CBM_CFS (2 << 12) /* codec clk master & frame slave */
--#define SND_SOC_DAIFMT_CBS_CFS (3 << 12) /* codec clk & frm slave */
-+#define SND_SOC_DAIFMT_CBS_CFS (3 << 12) /* codec clk & FRM slave */
-
- #define SND_SOC_DAIFMT_FORMAT_MASK 0x000f
- #define SND_SOC_DAIFMT_CLOCK_MASK 0x00f0
-@@ -96,6 +79,16 @@
- #define SND_SOC_CLOCK_IN 0
- #define SND_SOC_CLOCK_OUT 1
-
-+#define SND_SOC_STD_AC97_FMTS (SNDRV_PCM_FMTBIT_S8 |\
-+ SNDRV_PCM_FMTBIT_S16_LE |\
-+ SNDRV_PCM_FMTBIT_S16_BE |\
-+ SNDRV_PCM_FMTBIT_S20_3LE |\
-+ SNDRV_PCM_FMTBIT_S20_3BE |\
-+ SNDRV_PCM_FMTBIT_S24_3LE |\
-+ SNDRV_PCM_FMTBIT_S24_3BE |\
-+ SNDRV_PCM_FMTBIT_S32_LE |\
-+ SNDRV_PCM_FMTBIT_S32_BE)
-+
- struct snd_soc_dai_ops;
- struct snd_soc_dai;
- struct snd_ac97_bus_ops;
-@@ -114,13 +107,17 @@
- int div_id, int div);
-
- int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out);
-+ int pll_id, int source, unsigned int freq_in, unsigned int freq_out);
-
- /* Digital Audio interface formatting */
- int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt);
-
- int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
-- unsigned int mask, int slots);
-+ unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width);
-+
-+int snd_soc_dai_set_channel_map(struct snd_soc_dai *dai,
-+ unsigned int tx_num, unsigned int *tx_slot,
-+ unsigned int rx_num, unsigned int *rx_slot);
-
- int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate);
-
-@@ -130,12 +127,12 @@
- /*
- * Digital Audio Interface.
- *
-- * Describes the Digital Audio Interface in terms of it's ALSA, DAI and AC97
-- * operations an capabilities. Codec and platfom drivers will register a this
-+ * Describes the Digital Audio Interface in terms of its ALSA, DAI and AC97
-+ * operations and capabilities. Codec and platform drivers will register this
- * structure for every DAI they have.
- *
- * This structure covers the clocking, formating and ALSA operations for each
-- * interface a
-+ * interface.
- */
- struct snd_soc_dai_ops {
- /*
-@@ -144,8 +141,8 @@
- */
- int (*set_sysclk)(struct snd_soc_dai *dai,
- int clk_id, unsigned int freq, int dir);
-- int (*set_pll)(struct snd_soc_dai *dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out);
-+ int (*set_pll)(struct snd_soc_dai *dai, int pll_id, int source,
-+ unsigned int freq_in, unsigned int freq_out);
- int (*set_clkdiv)(struct snd_soc_dai *dai, int div_id, int div);
-
- /*
-@@ -154,7 +151,11 @@
- */
- int (*set_fmt)(struct snd_soc_dai *dai, unsigned int fmt);
- int (*set_tdm_slot)(struct snd_soc_dai *dai,
-- unsigned int mask, int slots);
-+ unsigned int tx_mask, unsigned int rx_mask,
-+ int slots, int slot_width);
-+ int (*set_channel_map)(struct snd_soc_dai *dai,
-+ unsigned int tx_num, unsigned int *tx_slot,
-+ unsigned int rx_num, unsigned int *rx_slot);
- int (*set_tristate)(struct snd_soc_dai *dai, int tristate);
-
- /*
-@@ -193,6 +194,7 @@
- int ac97_control;
-
- struct device *dev;
-+ void *ac97_pdata; /* platform_data for the ac97 codec */
-
- /* DAI callbacks */
- int (*probe)(struct platform_device *pdev,
-@@ -208,6 +210,7 @@
- /* DAI capabilities */
- struct snd_soc_pcm_stream capture;
- struct snd_soc_pcm_stream playback;
-+ unsigned int symmetric_rates:1;
-
- /* DAI runtime info */
- struct snd_pcm_runtime *runtime;
-@@ -219,11 +222,8 @@
- /* DAI private data */
- void *private_data;
-
-- /* parent codec/platform */
-- union {
-- struct snd_soc_codec *codec;
-- struct snd_soc_platform *platform;
-- };
-+ /* parent platform */
-+ struct snd_soc_platform *platform;
-
- struct list_head list;
- };
-Index: linux-2.6.30/include/sound/soc-dapm.h
-===================================================================
---- linux-2.6.30.orig/include/sound/soc-dapm.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/include/sound/soc-dapm.h 2011-02-01 16:40:30.177046291 +0100
-@@ -137,19 +137,39 @@
- .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD}
-
- /* stream domain */
-+#define SND_SOC_DAPM_AIF_IN(wname, stname, wslot, wreg, wshift, winvert) \
-+{ .id = snd_soc_dapm_aif_in, .name = wname, .sname = stname, \
-+ .reg = wreg, .shift = wshift, .invert = winvert }
-+#define SND_SOC_DAPM_AIF_OUT(wname, stname, wslot, wreg, wshift, winvert) \
-+{ .id = snd_soc_dapm_aif_out, .name = wname, .sname = stname, \
-+ .reg = wreg, .shift = wshift, .invert = winvert }
- #define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
- { .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
- .shift = wshift, .invert = winvert}
-+#define SND_SOC_DAPM_DAC_E(wname, stname, wreg, wshift, winvert, \
-+ wevent, wflags) \
-+{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
-+ .shift = wshift, .invert = winvert, \
-+ .event = wevent, .event_flags = wflags}
- #define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \
- { .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
- .shift = wshift, .invert = winvert}
-+#define SND_SOC_DAPM_ADC_E(wname, stname, wreg, wshift, winvert, \
-+ wevent, wflags) \
-+{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
-+ .shift = wshift, .invert = winvert, \
-+ .event = wevent, .event_flags = wflags}
-
--/* generic register modifier widget */
-+/* generic widgets */
- #define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \
- { .id = wid, .name = wname, .kcontrols = NULL, .num_kcontrols = 0, \
- .reg = -((wreg) + 1), .shift = wshift, .mask = wmask, \
- .on_val = won_val, .off_val = woff_val, .event = dapm_reg_event, \
- .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD}
-+#define SND_SOC_DAPM_SUPPLY(wname, wreg, wshift, winvert, wevent, wflags) \
-+{ .id = snd_soc_dapm_supply, .name = wname, .reg = wreg, \
-+ .shift = wshift, .invert = winvert, .event = wevent, \
-+ .event_flags = wflags}
-
- /* dapm kcontrol types */
- #define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) \
-@@ -186,6 +206,12 @@
- .get = snd_soc_dapm_get_enum_double, \
- .put = snd_soc_dapm_put_enum_double, \
- .private_value = (unsigned long)&xenum }
-+#define SOC_DAPM_ENUM_VIRT(xname, xenum) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_enum_double, \
-+ .get = snd_soc_dapm_get_enum_virt, \
-+ .put = snd_soc_dapm_put_enum_virt, \
-+ .private_value = (unsigned long)&xenum }
- #define SOC_DAPM_VALUE_ENUM(xname, xenum) \
- { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
- .info = snd_soc_info_enum_double, \
-@@ -240,6 +266,10 @@
- struct snd_ctl_elem_value *ucontrol);
- int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
- struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_get_enum_virt(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
- int snd_soc_dapm_get_value_enum_double(struct snd_kcontrol *kcontrol,
- struct snd_ctl_elem_value *ucontrol);
- int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol,
-@@ -265,11 +295,11 @@
- /* dapm events */
- int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream,
- int event);
--int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
-- enum snd_soc_bias_level level);
-+void snd_soc_dapm_shutdown(struct snd_soc_device *socdev);
-
- /* dapm sys fs - used by the core */
- int snd_soc_dapm_sys_add(struct device *dev);
-+void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec);
-
- /* dapm audio pin control and status */
- int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, const char *pin);
-@@ -298,6 +328,9 @@
- snd_soc_dapm_vmid, /* codec bias/vmid - to minimise pops */
- snd_soc_dapm_pre, /* machine specific pre widget - exec first */
- snd_soc_dapm_post, /* machine specific post widget - exec last */
-+ snd_soc_dapm_supply, /* power/clock supply */
-+ snd_soc_dapm_aif_in, /* audio interface input */
-+ snd_soc_dapm_aif_out, /* audio interface output */
- };
-
- /*
-@@ -310,6 +343,10 @@
- const char *sink;
- const char *control;
- const char *source;
-+
-+ /* Note: currently only supported for links where source is a supply */
-+ int (*connected)(struct snd_soc_dapm_widget *source,
-+ struct snd_soc_dapm_widget *sink);
- };
-
- /* dapm audio path between two widgets */
-@@ -326,6 +363,9 @@
- u32 connect:1; /* source and sink widgets are connected */
- u32 walked:1; /* path has been walked */
-
-+ int (*connected)(struct snd_soc_dapm_widget *source,
-+ struct snd_soc_dapm_widget *sink);
-+
- struct list_head list_source;
- struct list_head list_sink;
- struct list_head list;
-@@ -357,6 +397,8 @@
- unsigned char suspend:1; /* was active before suspend */
- unsigned char pmdown:1; /* waiting for timeout */
-
-+ int (*power_check)(struct snd_soc_dapm_widget *w);
-+
- /* external events */
- unsigned short event_flags; /* flags to specify event types */
- int (*event)(struct snd_soc_dapm_widget*, struct snd_kcontrol *, int);
-@@ -368,6 +410,9 @@
- /* widget input and outputs */
- struct list_head sources;
- struct list_head sinks;
-+
-+ /* used during DAPM updates */
-+ struct list_head power_list;
- };
-
- #endif
-Index: linux-2.6.30/include/sound/soc.h
-===================================================================
---- linux-2.6.30.orig/include/sound/soc.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/include/sound/soc.h 2011-02-01 16:40:30.177046291 +0100
-@@ -118,6 +118,14 @@
- .info = snd_soc_info_volsw, \
- .get = xhandler_get, .put = xhandler_put, \
- .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) }
-+#define SOC_DOUBLE_EXT(xname, xreg, shift_left, shift_right, xmax, xinvert,\
-+ xhandler_get, xhandler_put) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
-+ .info = snd_soc_info_volsw, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = (unsigned long)&(struct soc_mixer_control) \
-+ {.reg = xreg, .shift = shift_left, .rshift = shift_right, \
-+ .max = xmax, .invert = xinvert} }
- #define SOC_SINGLE_EXT_TLV(xname, xreg, xshift, xmax, xinvert,\
- xhandler_get, xhandler_put, tlv_array) \
- { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-@@ -127,6 +135,28 @@
- .info = snd_soc_info_volsw, \
- .get = xhandler_get, .put = xhandler_put, \
- .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) }
-+#define SOC_DOUBLE_EXT_TLV(xname, xreg, shift_left, shift_right, xmax, xinvert,\
-+ xhandler_get, xhandler_put, tlv_array) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
-+ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
-+ SNDRV_CTL_ELEM_ACCESS_READWRITE, \
-+ .tlv.p = (tlv_array), \
-+ .info = snd_soc_info_volsw, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = (unsigned long)&(struct soc_mixer_control) \
-+ {.reg = xreg, .shift = shift_left, .rshift = shift_right, \
-+ .max = xmax, .invert = xinvert} }
-+#define SOC_DOUBLE_R_EXT_TLV(xname, reg_left, reg_right, xshift, xmax, xinvert,\
-+ xhandler_get, xhandler_put, tlv_array) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
-+ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
-+ SNDRV_CTL_ELEM_ACCESS_READWRITE, \
-+ .tlv.p = (tlv_array), \
-+ .info = snd_soc_info_volsw_2r, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = (unsigned long)&(struct soc_mixer_control) \
-+ {.reg = reg_left, .rreg = reg_right, .shift = xshift, \
-+ .max = xmax, .invert = xinvert} }
- #define SOC_SINGLE_BOOL_EXT(xname, xdata, xhandler_get, xhandler_put) \
- { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
- .info = snd_soc_info_bool_ext, \
-@@ -175,14 +205,28 @@
- #endif
-
- typedef int (*hw_write_t)(void *,const char* ,int);
--typedef int (*hw_read_t)(void *,char* ,int);
-
- extern struct snd_ac97_bus_ops soc_ac97_ops;
-
-+enum snd_soc_control_type {
-+ SND_SOC_CUSTOM,
-+ SND_SOC_I2C,
-+ SND_SOC_SPI,
-+};
-+
- int snd_soc_register_platform(struct snd_soc_platform *platform);
- void snd_soc_unregister_platform(struct snd_soc_platform *platform);
- int snd_soc_register_codec(struct snd_soc_codec *codec);
- void snd_soc_unregister_codec(struct snd_soc_codec *codec);
-+int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg);
-+int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
-+ int addr_bits, int data_bits,
-+ enum snd_soc_control_type control);
-+
-+#ifdef CONFIG_PM
-+int snd_soc_suspend_device(struct device *dev);
-+int snd_soc_resume_device(struct device *dev);
-+#endif
-
- /* pcm <-> DAI connect */
- void snd_soc_free_pcms(struct snd_soc_device *socdev);
-@@ -206,15 +250,11 @@
- struct snd_soc_jack_gpio *gpios);
- #endif
-
--/* codec IO */
--#define snd_soc_read(codec, reg) codec->read(codec, reg)
--#define snd_soc_write(codec, reg, value) codec->write(codec, reg, value)
--
- /* codec register bit access */
- int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
-- unsigned short mask, unsigned short value);
-+ unsigned int mask, unsigned int value);
- int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
-- unsigned short mask, unsigned short value);
-+ unsigned int mask, unsigned int value);
-
- int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
- struct snd_ac97_bus_ops *ops, int num);
-@@ -331,6 +371,7 @@
- struct module *owner;
- struct mutex mutex;
- struct device *dev;
-+ struct snd_soc_device *socdev;
-
- struct list_head list;
-
-@@ -351,8 +392,10 @@
- int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
- int (*display_register)(struct snd_soc_codec *, char *,
- size_t, unsigned int);
-+ int (*volatile_register)(unsigned int);
-+ int (*readable_register)(unsigned int);
- hw_write_t hw_write;
-- hw_read_t hw_read;
-+ unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int);
- void *reg_cache;
- short reg_cache_size;
- short reg_cache_step;
-@@ -370,8 +413,10 @@
- unsigned int num_dai;
-
- #ifdef CONFIG_DEBUG_FS
-+ struct dentry *debugfs_codec_root;
- struct dentry *debugfs_reg;
- struct dentry *debugfs_pop_time;
-+ struct dentry *debugfs_dapm;
- #endif
- };
-
-@@ -417,6 +462,12 @@
- /* codec/machine specific init - e.g. add machine controls */
- int (*init)(struct snd_soc_codec *codec);
-
-+ /* Symmetry requirements */
-+ unsigned int symmetric_rates:1;
-+
-+ /* Symmetry data - only valid if symmetry is being enforced */
-+ unsigned int rate;
-+
- /* DAI pcm */
- struct snd_pcm *pcm;
- };
-@@ -490,6 +541,19 @@
- void *dapm;
- };
-
-+/* codec IO */
-+static inline unsigned int snd_soc_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ return codec->read(codec, reg);
-+}
-+
-+static inline unsigned int snd_soc_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int val)
-+{
-+ return codec->write(codec, reg, val);
-+}
-+
- #include <sound/soc-dai.h>
-
- #endif
-Index: linux-2.6.30/sound/soc/Makefile
-===================================================================
---- linux-2.6.30.orig/sound/soc/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/Makefile 2011-02-01 16:40:30.177046291 +0100
-@@ -1,4 +1,4 @@
--snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o
-+snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o soc-cache.o
-
- obj-$(CONFIG_SND_SOC) += snd-soc-core.o
- obj-$(CONFIG_SND_SOC) += codecs/
-Index: linux-2.6.30/sound/soc/atmel/Kconfig
-===================================================================
---- linux-2.6.30.orig/sound/soc/atmel/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/atmel/Kconfig 2011-02-01 16:40:30.177046291 +0100
-@@ -41,3 +41,11 @@
- and FRAME signals on the PlayPaq. Unless you want to play
- with the AT32 as the SSC master, you probably want to say N here,
- as this will give you better sound quality.
-+
-+config SND_AT91_SOC_AFEB9260
-+ tristate "SoC Audio support for AFEB9260 board"
-+ depends on ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
-+ select SND_ATMEL_SOC_SSC
-+ select SND_SOC_TLV320AIC23
-+ help
-+ Say Y here to support sound on AFEB9260 board.
-Index: linux-2.6.30/sound/soc/atmel/Makefile
-===================================================================
---- linux-2.6.30.orig/sound/soc/atmel/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/atmel/Makefile 2011-02-01 16:40:30.177046291 +0100
-@@ -13,3 +13,4 @@
-
- obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
- obj-$(CONFIG_SND_AT32_SOC_PLAYPAQ) += snd-soc-playpaq.o
-+obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
-Index: linux-2.6.30/sound/soc/atmel/atmel_ssc_dai.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/atmel/atmel_ssc_dai.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/atmel/atmel_ssc_dai.c 2011-02-01 16:40:30.177046291 +0100
-@@ -427,7 +427,7 @@
- | SSC_BF(RCMR_STTDLY, START_DELAY)
- | SSC_BF(RCMR_START, SSC_START_FALLING_RF)
- | SSC_BF(RCMR_CKI, SSC_CKI_RISING)
-- | SSC_BF(RCMR_CKO, SSC_CKO_NONE)
-+ | SSC_BF(RCMR_CKO, SSC_CKO_CONTINUOUS)
- | SSC_BF(RCMR_CKS, SSC_CKS_DIV);
-
- rfmr = SSC_BF(RFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
-Index: linux-2.6.30/sound/soc/atmel/playpaq_wm8510.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/atmel/playpaq_wm8510.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/atmel/playpaq_wm8510.c 2011-02-01 16:40:30.177046291 +0100
-@@ -117,7 +117,7 @@
- * Find actual rate, compare to requested rate
- */
- actual_rate = (cd.ssc_rate / (cd.cmr_div * 2)) / (2 * (cd.period + 1));
-- pr_debug("playpaq_wm8510: Request rate = %d, actual rate = %d\n",
-+ pr_debug("playpaq_wm8510: Request rate = %u, actual rate = %u\n",
- rate, actual_rate);
-
-
-@@ -268,7 +268,7 @@
- #endif /* CONFIG_SND_AT32_SOC_PLAYPAQ_SLAVE */
-
-
-- ret = snd_soc_dai_set_pll(codec_dai, 0,
-+ ret = snd_soc_dai_set_pll(codec_dai, 0, 0,
- clk_get_rate(CODEC_CLK), pll_out);
- if (ret < 0) {
- pr_warning("playpaq_wm8510: Failed to set CODEC DAI PLL (%d)\n",
-Index: linux-2.6.30/sound/soc/atmel/sam9g20_wm8731.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/atmel/sam9g20_wm8731.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/atmel/sam9g20_wm8731.c 2011-02-01 16:40:30.193007582 +0100
-@@ -56,133 +56,32 @@
-
- #define MCLK_RATE 12000000
-
-+/*
-+ * As shipped the board does not have inputs. However, it is relatively
-+ * straightforward to modify the board to hook them up so support is left
-+ * in the driver.
-+ */
-+#undef ENABLE_MIC_INPUT
-+#define ENABLE_MIC_INPUT 1
- static struct clk *mclk;
-
--static int at91sam9g20ek_startup(struct snd_pcm_substream *substream)
--{
-- struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-- struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-- int ret;
--
-- ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
-- MCLK_RATE, SND_SOC_CLOCK_IN);
-- if (ret < 0) {
-- clk_disable(mclk);
-- return ret;
-- }
--
-- return 0;
--}
--
--static void at91sam9g20ek_shutdown(struct snd_pcm_substream *substream)
--{
-- struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
--
-- dev_dbg(rtd->socdev->dev, "shutdown");
--}
--
- static int at91sam9g20ek_hw_params(struct snd_pcm_substream *substream,
- struct snd_pcm_hw_params *params)
- {
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
- struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-- struct atmel_ssc_info *ssc_p = cpu_dai->private_data;
-- struct ssc_device *ssc = ssc_p->ssc;
- int ret;
-
-- unsigned int rate;
-- int cmr_div, period;
--
-- if (ssc == NULL) {
-- printk(KERN_INFO "at91sam9g20ek_hw_params: ssc is NULL!\n");
-- return -EINVAL;
-- }
--
- /* set codec DAI configuration */
- ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
-- SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
- if (ret < 0)
- return ret;
-
- /* set cpu DAI configuration */
- ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
-- SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
-- if (ret < 0)
-- return ret;
--
-- /*
-- * The SSC clock dividers depend on the sample rate. The CMR.DIV
-- * field divides the system master clock MCK to drive the SSC TK
-- * signal which provides the codec BCLK. The TCMR.PERIOD and
-- * RCMR.PERIOD fields further divide the BCLK signal to drive
-- * the SSC TF and RF signals which provide the codec DACLRC and
-- * ADCLRC clocks.
-- *
-- * The dividers were determined through trial and error, where a
-- * CMR.DIV value is chosen such that the resulting BCLK value is
-- * divisible, or almost divisible, by (2 * sample rate), and then
-- * the TCMR.PERIOD or RCMR.PERIOD is BCLK / (2 * sample rate) - 1.
-- */
-- rate = params_rate(params);
--
-- switch (rate) {
-- case 8000:
-- cmr_div = 55; /* BCLK = 133MHz/(2*55) = 1.209MHz */
-- period = 74; /* LRC = BCLK/(2*(74+1)) ~= 8060,6Hz */
-- break;
-- case 11025:
-- cmr_div = 67; /* BCLK = 133MHz/(2*60) = 1.108MHz */
-- period = 45; /* LRC = BCLK/(2*(49+1)) = 11083,3Hz */
-- break;
-- case 16000:
-- cmr_div = 63; /* BCLK = 133MHz/(2*63) = 1.055MHz */
-- period = 32; /* LRC = BCLK/(2*(32+1)) = 15993,2Hz */
-- break;
-- case 22050:
-- cmr_div = 52; /* BCLK = 133MHz/(2*52) = 1.278MHz */
-- period = 28; /* LRC = BCLK/(2*(28+1)) = 22049Hz */
-- break;
-- case 32000:
-- cmr_div = 66; /* BCLK = 133MHz/(2*66) = 1.007MHz */
-- period = 15; /* LRC = BCLK/(2*(15+1)) = 31486,742Hz */
-- break;
-- case 44100:
-- cmr_div = 29; /* BCLK = 133MHz/(2*29) = 2.293MHz */
-- period = 25; /* LRC = BCLK/(2*(25+1)) = 44098Hz */
-- break;
-- case 48000:
-- cmr_div = 33; /* BCLK = 133MHz/(2*33) = 2.015MHz */
-- period = 20; /* LRC = BCLK/(2*(20+1)) = 47979,79Hz */
-- break;
-- case 88200:
-- cmr_div = 29; /* BCLK = 133MHz/(2*29) = 2.293MHz */
-- period = 12; /* LRC = BCLK/(2*(12+1)) = 88196Hz */
-- break;
-- case 96000:
-- cmr_div = 23; /* BCLK = 133MHz/(2*23) = 2.891MHz */
-- period = 14; /* LRC = BCLK/(2*(14+1)) = 96376Hz */
-- break;
-- default:
-- printk(KERN_WARNING "unsupported rate %d"
-- " on at91sam9g20ek board\n", rate);
-- return -EINVAL;
-- }
--
-- /* set the MCK divider for BCLK */
-- ret = snd_soc_dai_set_clkdiv(cpu_dai, ATMEL_SSC_CMR_DIV, cmr_div);
-- if (ret < 0)
-- return ret;
--
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-- /* set the BCLK divider for DACLRC */
-- ret = snd_soc_dai_set_clkdiv(cpu_dai,
-- ATMEL_SSC_TCMR_PERIOD, period);
-- } else {
-- /* set the BCLK divider for ADCLRC */
-- ret = snd_soc_dai_set_clkdiv(cpu_dai,
-- ATMEL_SSC_RCMR_PERIOD, period);
-- }
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
- if (ret < 0)
- return ret;
-
-@@ -190,9 +89,7 @@
- }
-
- static struct snd_soc_ops at91sam9g20ek_ops = {
-- .startup = at91sam9g20ek_startup,
- .hw_params = at91sam9g20ek_hw_params,
-- .shutdown = at91sam9g20ek_shutdown,
- };
-
- static int at91sam9g20ek_set_bias_level(struct snd_soc_card *card,
-@@ -241,10 +138,20 @@
- */
- static int at91sam9g20ek_wm8731_init(struct snd_soc_codec *codec)
- {
-+ struct snd_soc_dai *codec_dai = &codec->dai[0];
-+ int ret;
-+
- printk(KERN_DEBUG
- "at91sam9g20ek_wm8731 "
- ": at91sam9g20ek_wm8731_init() called\n");
-
-+ ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
-+ MCLK_RATE, SND_SOC_CLOCK_IN);
-+ if (ret < 0) {
-+ printk(KERN_ERR "Failed to set WM8731 SYSCLK: %d\n", ret);
-+ return ret;
-+ }
-+
- /* Add specific widgets */
- snd_soc_dapm_new_controls(codec, at91sam9g20ek_dapm_widgets,
- ARRAY_SIZE(at91sam9g20ek_dapm_widgets));
-@@ -255,8 +162,13 @@
- snd_soc_dapm_nc_pin(codec, "RLINEIN");
- snd_soc_dapm_nc_pin(codec, "LLINEIN");
-
-- /* always connected */
-+#ifdef ENABLE_MIC_INPUT
- snd_soc_dapm_enable_pin(codec, "Int Mic");
-+#else
-+ snd_soc_dapm_nc_pin(codec, "Int Mic");
-+#endif
-+
-+ /* always connected */
- snd_soc_dapm_enable_pin(codec, "Ext Spk");
-
- snd_soc_dapm_sync(codec);
-@@ -281,38 +193,6 @@
- .set_bias_level = at91sam9g20ek_set_bias_level,
- };
-
--/*
-- * FIXME: This is a temporary bodge to avoid cross-tree merge issues.
-- * New drivers should register the wm8731 I2C device in the machine
-- * setup code (under arch/arm for ARM systems).
-- */
--static int wm8731_i2c_register(void)
--{
-- struct i2c_board_info info;
-- struct i2c_adapter *adapter;
-- struct i2c_client *client;
--
-- memset(&info, 0, sizeof(struct i2c_board_info));
-- info.addr = 0x1b;
-- strlcpy(info.type, "wm8731", I2C_NAME_SIZE);
--
-- adapter = i2c_get_adapter(0);
-- if (!adapter) {
-- printk(KERN_ERR "can't get i2c adapter 0\n");
-- return -ENODEV;
-- }
--
-- client = i2c_new_device(adapter, &info);
-- i2c_put_adapter(adapter);
-- if (!client) {
-- printk(KERN_ERR "can't add i2c device at 0x%x\n",
-- (unsigned int)info.addr);
-- return -ENODEV;
-- }
--
-- return 0;
--}
--
- static struct snd_soc_device at91sam9g20ek_snd_devdata = {
- .card = &snd_soc_at91sam9g20ek,
- .codec_dev = &soc_codec_dev_wm8731,
-@@ -327,7 +207,7 @@
- struct clk *pllb;
- int ret;
-
-- if (!machine_is_at91sam9g20ek())
-+ if (!(machine_is_at91sam9g20ek() || machine_is_at91sam9g20ek_2mmc()))
- return -ENODEV;
-
- /*
-@@ -367,10 +247,6 @@
- }
- ssc_p->ssc = ssc;
-
-- ret = wm8731_i2c_register();
-- if (ret != 0)
-- goto err_ssc;
--
- at91sam9g20ek_snd_device = platform_device_alloc("soc-audio", -1);
- if (!at91sam9g20ek_snd_device) {
- printk(KERN_ERR "ASoC: Platform device allocation failed\n");
-Index: linux-2.6.30/sound/soc/codecs/Kconfig
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/Kconfig 2011-02-01 16:40:30.181004049 +0100
-@@ -12,13 +12,20 @@
- tristate "Build all ASoC CODEC drivers"
- select SND_SOC_L3
- select SND_SOC_AC97_CODEC if SND_SOC_AC97_BUS
-+ select SND_SOC_AD1836 if SPI_MASTER
-+ select SND_SOC_AD1938 if SPI_MASTER
- select SND_SOC_AD1980 if SND_SOC_AC97_BUS
- select SND_SOC_AD73311 if I2C
- select SND_SOC_AK4104 if SPI_MASTER
- select SND_SOC_AK4535 if I2C
-+ select SND_SOC_AK4642 if I2C
-+ select SND_SOC_AK4671 if I2C
- select SND_SOC_CS4270 if I2C
-+ select SND_SOC_MAX9877 if I2C
- select SND_SOC_PCM3008
-+ select SND_SOC_SPDIF
- select SND_SOC_SSM2602 if I2C
-+ select SND_SOC_STAC9766 if SND_SOC_AC97_BUS
- select SND_SOC_TLV320AIC23 if I2C
- select SND_SOC_TLV320AIC26 if SPI_MASTER
- select SND_SOC_TLV320AIC3X if I2C
-@@ -28,15 +35,25 @@
- select SND_SOC_WM8350 if MFD_WM8350
- select SND_SOC_WM8400 if MFD_WM8400
- select SND_SOC_WM8510 if SND_SOC_I2C_AND_SPI
-+ select SND_SOC_WM8523 if I2C
- select SND_SOC_WM8580 if I2C
-+ select SND_SOC_WM8711 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8728 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8731 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8750 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8753 if SND_SOC_I2C_AND_SPI
-+ select SND_SOC_WM8776 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8900 if I2C
- select SND_SOC_WM8903 if I2C
-+ select SND_SOC_WM8940 if I2C
-+ select SND_SOC_WM8960 if I2C
-+ select SND_SOC_WM8961 if I2C
- select SND_SOC_WM8971 if I2C
-+ select SND_SOC_WM8974 if I2C
-+ select SND_SOC_WM8988 if SND_SOC_I2C_AND_SPI
- select SND_SOC_WM8990 if I2C
-+ select SND_SOC_WM8993 if I2C
-+ select SND_SOC_WM9081 if I2C
- select SND_SOC_WM9705 if SND_SOC_AC97_BUS
- select SND_SOC_WM9712 if SND_SOC_AC97_BUS
- select SND_SOC_WM9713 if SND_SOC_AC97_BUS
-@@ -51,11 +68,21 @@
-
- If unsure select "N".
-
-+config SND_SOC_WM_HUBS
-+ tristate
-+ default y if SND_SOC_WM8993=y
-+ default m if SND_SOC_WM8993=m
-
- config SND_SOC_AC97_CODEC
- tristate
- select SND_AC97_CODEC
-
-+config SND_SOC_AD1836
-+ tristate
-+
-+config SND_SOC_AD1938
-+ tristate
-+
- config SND_SOC_AD1980
- tristate
-
-@@ -68,6 +95,12 @@
- config SND_SOC_AK4535
- tristate
-
-+config SND_SOC_AK4642
-+ tristate
-+
-+config SND_SOC_AK4671
-+ tristate
-+
- # Cirrus Logic CS4270 Codec
- config SND_SOC_CS4270
- tristate
-@@ -80,15 +113,24 @@
- bool
- depends on SND_SOC_CS4270
-
-+config SND_SOC_CX20442
-+ tristate
-+
- config SND_SOC_L3
- tristate
-
- config SND_SOC_PCM3008
- tristate
-
-+config SND_SOC_SPDIF
-+ tristate
-+
- config SND_SOC_SSM2602
- tristate
-
-+config SND_SOC_STAC9766
-+ tristate
-+
- config SND_SOC_TLV320AIC23
- tristate
-
-@@ -117,9 +159,15 @@
- config SND_SOC_WM8510
- tristate
-
-+config SND_SOC_WM8523
-+ tristate
-+
- config SND_SOC_WM8580
- tristate
-
-+config SND_SOC_WM8711
-+ tristate
-+
- config SND_SOC_WM8728
- tristate
-
-@@ -132,18 +180,42 @@
- config SND_SOC_WM8753
- tristate
-
-+config SND_SOC_WM8776
-+ tristate
-+
- config SND_SOC_WM8900
- tristate
-
- config SND_SOC_WM8903
- tristate
-
-+config SND_SOC_WM8940
-+ tristate
-+
-+config SND_SOC_WM8960
-+ tristate
-+
-+config SND_SOC_WM8961
-+ tristate
-+
- config SND_SOC_WM8971
- tristate
-
-+config SND_SOC_WM8974
-+ tristate
-+
-+config SND_SOC_WM8988
-+ tristate
-+
- config SND_SOC_WM8990
- tristate
-
-+config SND_SOC_WM8993
-+ tristate
-+
-+config SND_SOC_WM9081
-+ tristate
-+
- config SND_SOC_WM9705
- tristate
-
-@@ -152,3 +224,7 @@
-
- config SND_SOC_WM9713
- tristate
-+
-+# Amp
-+config SND_SOC_MAX9877
-+ tristate
-Index: linux-2.6.30/sound/soc/codecs/Makefile
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/Makefile 2011-02-01 16:40:30.181004049 +0100
-@@ -1,12 +1,19 @@
- snd-soc-ac97-objs := ac97.o
-+snd-soc-ad1836-objs := ad1836.o
-+snd-soc-ad1938-objs := ad1938.o
- snd-soc-ad1980-objs := ad1980.o
- snd-soc-ad73311-objs := ad73311.o
- snd-soc-ak4104-objs := ak4104.o
- snd-soc-ak4535-objs := ak4535.o
-+snd-soc-ak4642-objs := ak4642.o
-+snd-soc-ak4671-objs := ak4671.o
- snd-soc-cs4270-objs := cs4270.o
-+snd-soc-cx20442-objs := cx20442.o
- snd-soc-l3-objs := l3.o
- snd-soc-pcm3008-objs := pcm3008.o
-+snd-soc-spdif-objs := spdif_transciever.o
- snd-soc-ssm2602-objs := ssm2602.o
-+snd-soc-stac9766-objs := stac9766.o
- snd-soc-tlv320aic23-objs := tlv320aic23.o
- snd-soc-tlv320aic26-objs := tlv320aic26.o
- snd-soc-tlv320aic3x-objs := tlv320aic3x.o
-@@ -16,28 +23,49 @@
- snd-soc-wm8350-objs := wm8350.o
- snd-soc-wm8400-objs := wm8400.o
- snd-soc-wm8510-objs := wm8510.o
-+snd-soc-wm8523-objs := wm8523.o
- snd-soc-wm8580-objs := wm8580.o
-+snd-soc-wm8711-objs := wm8711.o
- snd-soc-wm8728-objs := wm8728.o
- snd-soc-wm8731-objs := wm8731.o
- snd-soc-wm8750-objs := wm8750.o
- snd-soc-wm8753-objs := wm8753.o
-+snd-soc-wm8776-objs := wm8776.o
- snd-soc-wm8900-objs := wm8900.o
- snd-soc-wm8903-objs := wm8903.o
-+snd-soc-wm8940-objs := wm8940.o
-+snd-soc-wm8960-objs := wm8960.o
-+snd-soc-wm8961-objs := wm8961.o
- snd-soc-wm8971-objs := wm8971.o
-+snd-soc-wm8974-objs := wm8974.o
-+snd-soc-wm8988-objs := wm8988.o
- snd-soc-wm8990-objs := wm8990.o
-+snd-soc-wm8993-objs := wm8993.o
-+snd-soc-wm9081-objs := wm9081.o
- snd-soc-wm9705-objs := wm9705.o
- snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
-+snd-soc-wm-hubs-objs := wm_hubs.o
-+
-+# Amp
-+snd-soc-max9877-objs := max9877.o
-
- obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
-+obj-$(CONFIG_SND_SOC_AD1836) += snd-soc-ad1836.o
-+obj-$(CONFIG_SND_SOC_AD1938) += snd-soc-ad1938.o
- obj-$(CONFIG_SND_SOC_AD1980) += snd-soc-ad1980.o
- obj-$(CONFIG_SND_SOC_AD73311) += snd-soc-ad73311.o
- obj-$(CONFIG_SND_SOC_AK4104) += snd-soc-ak4104.o
- obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o
-+obj-$(CONFIG_SND_SOC_AK4642) += snd-soc-ak4642.o
-+obj-$(CONFIG_SND_SOC_AK4671) += snd-soc-ak4671.o
- obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-cs4270.o
-+obj-$(CONFIG_SND_SOC_CX20442) += snd-soc-cx20442.o
- obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o
- obj-$(CONFIG_SND_SOC_PCM3008) += snd-soc-pcm3008.o
-+obj-$(CONFIG_SND_SOC_SPDIF) += snd-soc-spdif.o
- obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o
-+obj-$(CONFIG_SND_SOC_STAC9766) += snd-soc-stac9766.o
- obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o
- obj-$(CONFIG_SND_SOC_TLV320AIC26) += snd-soc-tlv320aic26.o
- obj-$(CONFIG_SND_SOC_TLV320AIC3X) += snd-soc-tlv320aic3x.o
-@@ -47,15 +75,29 @@
- obj-$(CONFIG_SND_SOC_WM8350) += snd-soc-wm8350.o
- obj-$(CONFIG_SND_SOC_WM8400) += snd-soc-wm8400.o
- obj-$(CONFIG_SND_SOC_WM8510) += snd-soc-wm8510.o
-+obj-$(CONFIG_SND_SOC_WM8523) += snd-soc-wm8523.o
- obj-$(CONFIG_SND_SOC_WM8580) += snd-soc-wm8580.o
-+obj-$(CONFIG_SND_SOC_WM8711) += snd-soc-wm8711.o
- obj-$(CONFIG_SND_SOC_WM8728) += snd-soc-wm8728.o
- obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
- obj-$(CONFIG_SND_SOC_WM8750) += snd-soc-wm8750.o
- obj-$(CONFIG_SND_SOC_WM8753) += snd-soc-wm8753.o
-+obj-$(CONFIG_SND_SOC_WM8776) += snd-soc-wm8776.o
- obj-$(CONFIG_SND_SOC_WM8900) += snd-soc-wm8900.o
- obj-$(CONFIG_SND_SOC_WM8903) += snd-soc-wm8903.o
- obj-$(CONFIG_SND_SOC_WM8971) += snd-soc-wm8971.o
-+obj-$(CONFIG_SND_SOC_WM8974) += snd-soc-wm8974.o
-+obj-$(CONFIG_SND_SOC_WM8940) += snd-soc-wm8940.o
-+obj-$(CONFIG_SND_SOC_WM8960) += snd-soc-wm8960.o
-+obj-$(CONFIG_SND_SOC_WM8961) += snd-soc-wm8961.o
-+obj-$(CONFIG_SND_SOC_WM8988) += snd-soc-wm8988.o
- obj-$(CONFIG_SND_SOC_WM8990) += snd-soc-wm8990.o
-+obj-$(CONFIG_SND_SOC_WM8993) += snd-soc-wm8993.o
-+obj-$(CONFIG_SND_SOC_WM9081) += snd-soc-wm9081.o
- obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o
- obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
- obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
-+obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o
-+
-+# Amp
-+obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o
-Index: linux-2.6.30/sound/soc/codecs/ac97.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/ac97.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/ac97.c 2011-02-01 16:40:30.181004049 +0100
-@@ -53,13 +53,13 @@
- .channels_min = 1,
- .channels_max = 2,
- .rates = STD_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .capture = {
- .stream_name = "AC97 Capture",
- .channels_min = 1,
- .channels_max = 2,
- .rates = STD_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .ops = &ac97_dai_ops,
- };
- EXPORT_SYMBOL_GPL(ac97_dai);
-Index: linux-2.6.30/sound/soc/codecs/ad1980.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/ad1980.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/ad1980.c 2011-02-01 16:40:30.181004049 +0100
-@@ -137,13 +137,13 @@
- .channels_min = 2,
- .channels_max = 6,
- .rates = SNDRV_PCM_RATE_48000,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE, },
-+ .formats = SND_SOC_STD_AC97_FMTS, },
- .capture = {
- .stream_name = "Capture",
- .channels_min = 2,
- .channels_max = 2,
- .rates = SNDRV_PCM_RATE_48000,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE, },
-+ .formats = SND_SOC_STD_AC97_FMTS, },
- };
- EXPORT_SYMBOL_GPL(ad1980_dai);
-
-Index: linux-2.6.30/sound/soc/codecs/ak4535.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/ak4535.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/ak4535.c 2011-02-01 16:40:30.181004049 +0100
-@@ -59,21 +59,6 @@
- return cache[reg];
- }
-
--static inline unsigned int ak4535_read(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u8 data;
-- data = reg;
--
-- if (codec->hw_write(codec->control_data, &data, 1) != 1)
-- return -EIO;
--
-- if (codec->hw_read(codec->control_data, &data, 1) != 1)
-- return -EIO;
--
-- return data;
--};
--
- /*
- * write ak4535 register cache
- */
-@@ -635,7 +620,6 @@
- #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
- codec->hw_write = (hw_write_t)i2c_master_send;
-- codec->hw_read = (hw_read_t)i2c_master_recv;
- ret = ak4535_add_i2c_device(pdev, setup);
- }
- #endif
-Index: linux-2.6.30/sound/soc/codecs/cs4270.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/cs4270.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/cs4270.c 2011-02-01 16:40:30.181004049 +0100
-@@ -18,7 +18,7 @@
- * - The machine driver's 'startup' function must call
- * cs4270_set_dai_sysclk() with the value of MCLK.
- * - Only I2S and left-justified modes are supported
-- * - Power management is not supported
-+ * - Power management is supported
- */
-
- #include <linux/module.h>
-@@ -27,6 +27,7 @@
- #include <sound/soc.h>
- #include <sound/initval.h>
- #include <linux/i2c.h>
-+#include <linux/delay.h>
-
- #include "cs4270.h"
-
-@@ -56,6 +57,7 @@
- #define CS4270_FIRSTREG 0x01
- #define CS4270_LASTREG 0x08
- #define CS4270_NUMREGS (CS4270_LASTREG - CS4270_FIRSTREG + 1)
-+#define CS4270_I2C_INCR 0x80
-
- /* Bit masks for the CS4270 registers */
- #define CS4270_CHIPID_ID 0xF0
-@@ -64,6 +66,8 @@
- #define CS4270_PWRCTL_PDN_ADC 0x20
- #define CS4270_PWRCTL_PDN_DAC 0x02
- #define CS4270_PWRCTL_PDN 0x01
-+#define CS4270_PWRCTL_PDN_ALL \
-+ (CS4270_PWRCTL_PDN_ADC | CS4270_PWRCTL_PDN_DAC | CS4270_PWRCTL_PDN)
- #define CS4270_MODE_SPEED_MASK 0x30
- #define CS4270_MODE_1X 0x00
- #define CS4270_MODE_2X 0x10
-@@ -109,6 +113,7 @@
- unsigned int mclk; /* Input frequency of the MCLK pin */
- unsigned int mode; /* The mode (I2S or left-justified) */
- unsigned int slave_mode;
-+ unsigned int manual_mute;
- };
-
- /**
-@@ -295,7 +300,7 @@
- s32 length;
-
- length = i2c_smbus_read_i2c_block_data(i2c_client,
-- CS4270_FIRSTREG | 0x80, CS4270_NUMREGS, cache);
-+ CS4270_FIRSTREG | CS4270_I2C_INCR, CS4270_NUMREGS, cache);
-
- if (length != CS4270_NUMREGS) {
- dev_err(codec->dev, "i2c read failure, addr=0x%x\n",
-@@ -453,7 +458,7 @@
- }
-
- /**
-- * cs4270_mute - enable/disable the CS4270 external mute
-+ * cs4270_dai_mute - enable/disable the CS4270 external mute
- * @dai: the SOC DAI
- * @mute: 0 = disable mute, 1 = enable mute
- *
-@@ -462,21 +467,52 @@
- * board does not have the MUTEA or MUTEB pins connected to such circuitry,
- * then this function will do nothing.
- */
--static int cs4270_mute(struct snd_soc_dai *dai, int mute)
-+static int cs4270_dai_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-+ struct cs4270_private *cs4270 = codec->private_data;
- int reg6;
-
- reg6 = snd_soc_read(codec, CS4270_MUTE);
-
- if (mute)
- reg6 |= CS4270_MUTE_DAC_A | CS4270_MUTE_DAC_B;
-- else
-+ else {
- reg6 &= ~(CS4270_MUTE_DAC_A | CS4270_MUTE_DAC_B);
-+ reg6 |= cs4270->manual_mute;
-+ }
-
- return snd_soc_write(codec, CS4270_MUTE, reg6);
- }
-
-+/**
-+ * cs4270_soc_put_mute - put callback for the 'Master Playback switch'
-+ * alsa control.
-+ * @kcontrol: mixer control
-+ * @ucontrol: control element information
-+ *
-+ * This function basically passes the arguments on to the generic
-+ * snd_soc_put_volsw() function and saves the mute information in
-+ * our private data structure. This is because we want to prevent
-+ * cs4270_dai_mute() neglecting the user's decision to manually
-+ * mute the codec's output.
-+ *
-+ * Returns 0 for success.
-+ */
-+static int cs4270_soc_put_mute(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ struct cs4270_private *cs4270 = codec->private_data;
-+ int left = !ucontrol->value.integer.value[0];
-+ int right = !ucontrol->value.integer.value[1];
-+
-+ cs4270->manual_mute = (left ? CS4270_MUTE_DAC_A : 0) |
-+ (right ? CS4270_MUTE_DAC_B : 0);
-+
-+ return snd_soc_put_volsw(kcontrol, ucontrol);
-+}
-+
- /* A list of non-DAPM controls that the CS4270 supports */
- static const struct snd_kcontrol_new cs4270_snd_controls[] = {
- SOC_DOUBLE_R("Master Playback Volume",
-@@ -486,7 +522,9 @@
- SOC_SINGLE("Zero Cross Switch", CS4270_TRANS, 5, 1, 0),
- SOC_SINGLE("Popguard Switch", CS4270_MODE, 0, 1, 1),
- SOC_SINGLE("Auto-Mute Switch", CS4270_MUTE, 5, 1, 0),
-- SOC_DOUBLE("Master Capture Switch", CS4270_MUTE, 3, 4, 1, 0)
-+ SOC_DOUBLE("Master Capture Switch", CS4270_MUTE, 3, 4, 1, 1),
-+ SOC_DOUBLE_EXT("Master Playback Switch", CS4270_MUTE, 0, 1, 1, 1,
-+ snd_soc_get_volsw, cs4270_soc_put_mute),
- };
-
- /*
-@@ -506,7 +544,7 @@
- .hw_params = cs4270_hw_params,
- .set_sysclk = cs4270_set_dai_sysclk,
- .set_fmt = cs4270_set_dai_fmt,
-- .digital_mute = cs4270_mute,
-+ .digital_mute = cs4270_dai_mute,
- };
-
- struct snd_soc_dai cs4270_dai = {
-@@ -753,6 +791,74 @@
- };
- MODULE_DEVICE_TABLE(i2c, cs4270_id);
-
-+#ifdef CONFIG_PM
-+
-+/* This suspend/resume implementation can handle both - a simple standby
-+ * where the codec remains powered, and a full suspend, where the voltage
-+ * domain the codec is connected to is teared down and/or any other hardware
-+ * reset condition is asserted.
-+ *
-+ * The codec's own power saving features are enabled in the suspend callback,
-+ * and all registers are written back to the hardware when resuming.
-+ */
-+
-+static int cs4270_i2c_suspend(struct i2c_client *client, pm_message_t mesg)
-+{
-+ struct cs4270_private *cs4270 = i2c_get_clientdata(client);
-+ struct snd_soc_codec *codec = &cs4270->codec;
-+
-+ return snd_soc_suspend_device(codec->dev);
-+}
-+
-+static int cs4270_i2c_resume(struct i2c_client *client)
-+{
-+ struct cs4270_private *cs4270 = i2c_get_clientdata(client);
-+ struct snd_soc_codec *codec = &cs4270->codec;
-+
-+ return snd_soc_resume_device(codec->dev);
-+}
-+
-+static int cs4270_soc_suspend(struct platform_device *pdev, pm_message_t mesg)
-+{
-+ struct snd_soc_codec *codec = cs4270_codec;
-+ int reg = snd_soc_read(codec, CS4270_PWRCTL) | CS4270_PWRCTL_PDN_ALL;
-+
-+ return snd_soc_write(codec, CS4270_PWRCTL, reg);
-+}
-+
-+static int cs4270_soc_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_codec *codec = cs4270_codec;
-+ struct i2c_client *i2c_client = codec->control_data;
-+ int reg;
-+
-+ /* In case the device was put to hard reset during sleep, we need to
-+ * wait 500ns here before any I2C communication. */
-+ ndelay(500);
-+
-+ /* first restore the entire register cache ... */
-+ for (reg = CS4270_FIRSTREG; reg <= CS4270_LASTREG; reg++) {
-+ u8 val = snd_soc_read(codec, reg);
-+
-+ if (i2c_smbus_write_byte_data(i2c_client, reg, val)) {
-+ dev_err(codec->dev, "i2c write failed\n");
-+ return -EIO;
-+ }
-+ }
-+
-+ /* ... then disable the power-down bits */
-+ reg = snd_soc_read(codec, CS4270_PWRCTL);
-+ reg &= ~CS4270_PWRCTL_PDN_ALL;
-+
-+ return snd_soc_write(codec, CS4270_PWRCTL, reg);
-+}
-+#else
-+#define cs4270_i2c_suspend NULL
-+#define cs4270_i2c_resume NULL
-+#define cs4270_soc_suspend NULL
-+#define cs4270_soc_resume NULL
-+#endif /* CONFIG_PM */
-+
- /*
- * cs4270_i2c_driver - I2C device identification
- *
-@@ -767,6 +873,8 @@
- .id_table = cs4270_id,
- .probe = cs4270_i2c_probe,
- .remove = cs4270_i2c_remove,
-+ .suspend = cs4270_i2c_suspend,
-+ .resume = cs4270_i2c_resume,
- };
-
- /*
-@@ -777,7 +885,9 @@
- */
- struct snd_soc_codec_device soc_codec_device_cs4270 = {
- .probe = cs4270_probe,
-- .remove = cs4270_remove
-+ .remove = cs4270_remove,
-+ .suspend = cs4270_soc_suspend,
-+ .resume = cs4270_soc_resume,
- };
- EXPORT_SYMBOL_GPL(soc_codec_device_cs4270);
-
-Index: linux-2.6.30/sound/soc/codecs/ssm2602.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/ssm2602.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/ssm2602.c 2011-02-01 16:40:30.181004049 +0100
-@@ -336,15 +336,17 @@
- master_runtime->sample_bits,
- master_runtime->rate);
-
-- snd_pcm_hw_constraint_minmax(substream->runtime,
-- SNDRV_PCM_HW_PARAM_RATE,
-- master_runtime->rate,
-- master_runtime->rate);
--
-- snd_pcm_hw_constraint_minmax(substream->runtime,
-- SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-- master_runtime->sample_bits,
-- master_runtime->sample_bits);
-+ if (master_runtime->rate != 0)
-+ snd_pcm_hw_constraint_minmax(substream->runtime,
-+ SNDRV_PCM_HW_PARAM_RATE,
-+ master_runtime->rate,
-+ master_runtime->rate);
-+
-+ if (master_runtime->sample_bits != 0)
-+ snd_pcm_hw_constraint_minmax(substream->runtime,
-+ SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-+ master_runtime->sample_bits,
-+ master_runtime->sample_bits);
-
- ssm2602->slave_substream = substream;
- } else
-@@ -372,6 +374,7 @@
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- struct ssm2602_priv *ssm2602 = codec->private_data;
-+
- /* deactivate */
- if (!codec->active)
- ssm2602_write(codec, SSM2602_ACTIVE, 0);
-@@ -497,11 +500,9 @@
- return 0;
- }
-
--#define SSM2602_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
-- SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
-- SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |\
-- SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |\
-- SNDRV_PCM_RATE_96000)
-+#define SSM2602_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_32000 |\
-+ SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
-+ SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-
- #define SSM2602_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-Index: linux-2.6.30/sound/soc/codecs/tlv320aic23.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/tlv320aic23.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/tlv320aic23.c 2011-02-01 16:40:30.181004049 +0100
-@@ -86,7 +86,7 @@
- */
-
- if ((reg < 0 || reg > 9) && (reg != 15)) {
-- printk(KERN_WARNING "%s Invalid register R%d\n", __func__, reg);
-+ printk(KERN_WARNING "%s Invalid register R%u\n", __func__, reg);
- return -1;
- }
-
-@@ -98,7 +98,7 @@
- if (codec->hw_write(codec->control_data, data, 2) == 2)
- return 0;
-
-- printk(KERN_ERR "%s cannot write %03x to register R%d\n", __func__,
-+ printk(KERN_ERR "%s cannot write %03x to register R%u\n", __func__,
- value, reg);
-
- return -EIO;
-@@ -273,14 +273,14 @@
- * Every divisor is a factor of 11*12
- */
- #define SR_MULT (11*12)
--#define A(x) (x) ? (SR_MULT/x) : 0
-+#define A(x) (SR_MULT/x)
- static const unsigned char sr_adc_mult_table[] = {
-- A(2), A(2), A(12), A(12), A(0), A(0), A(3), A(1),
-- A(2), A(2), A(11), A(11), A(0), A(0), A(0), A(1)
-+ A(2), A(2), A(12), A(12), 0, 0, A(3), A(1),
-+ A(2), A(2), A(11), A(11), 0, 0, 0, A(1)
- };
- static const unsigned char sr_dac_mult_table[] = {
-- A(2), A(12), A(2), A(12), A(0), A(0), A(3), A(1),
-- A(2), A(11), A(2), A(11), A(0), A(0), A(0), A(1)
-+ A(2), A(12), A(2), A(12), 0, 0, A(3), A(1),
-+ A(2), A(11), A(2), A(11), 0, 0, 0, A(1)
- };
-
- static unsigned get_score(int adc, int adc_l, int adc_h, int need_adc,
-@@ -523,6 +523,8 @@
- case SND_SOC_DAIFMT_I2S:
- iface_reg |= TLV320AIC23_FOR_I2S;
- break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface_reg |= TLV320AIC23_LRP_ON;
- case SND_SOC_DAIFMT_DSP_B:
- iface_reg |= TLV320AIC23_FOR_DSP;
- break;
-Index: linux-2.6.30/sound/soc/codecs/tlv320aic3x.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/tlv320aic3x.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/tlv320aic3x.c 2011-02-01 16:40:30.181004049 +0100
-@@ -53,6 +53,7 @@
-
- /* codec private data */
- struct aic3x_priv {
-+ struct snd_soc_codec codec;
- unsigned int sysclk;
- int master;
- };
-@@ -145,8 +146,8 @@
- u8 *value)
- {
- *value = reg & 0xff;
-- if (codec->hw_read(codec->control_data, value, 1) != 1)
-- return -EIO;
-+
-+ value[0] = i2c_smbus_read_byte_data(codec->control_data, value[0]);
-
- aic3x_write_reg_cache(codec, reg, *value);
- return 0;
-@@ -767,6 +768,7 @@
- int codec_clk = 0, bypass_pll = 0, fsref, last_clk = 0;
- u8 data, r, p, pll_q, pll_p = 1, pll_r = 1, pll_j = 1;
- u16 pll_d = 1;
-+ u8 reg;
-
- /* select data word length */
- data =
-@@ -801,8 +803,16 @@
- pll_q &= 0xf;
- aic3x_write(codec, AIC3X_PLL_PROGA_REG, pll_q << PLLQ_SHIFT);
- aic3x_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_CLKDIV);
-- } else
-+ /* disable PLL if it is bypassed */
-+ reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-+ aic3x_write(codec, AIC3X_PLL_PROGA_REG, reg & ~PLL_ENABLE);
-+
-+ } else {
- aic3x_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_PLLDIV);
-+ /* enable PLL when it is used */
-+ reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-+ aic3x_write(codec, AIC3X_PLL_PROGA_REG, reg | PLL_ENABLE);
-+ }
-
- /* Route Left DAC to left channel input and
- * right DAC to right channel input */
-@@ -1147,11 +1157,13 @@
- * initialise the AIC3X driver
- * register the mixer and dsp interfaces with the kernel
- */
--static int aic3x_init(struct snd_soc_device *socdev)
-+static int aic3x_init(struct snd_soc_codec *codec)
- {
-- struct snd_soc_codec *codec = socdev->card->codec;
-- struct aic3x_setup_data *setup = socdev->codec_data;
-- int reg, ret = 0;
-+ int reg;
-+
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-
- codec->name = "tlv320aic3x";
- codec->owner = THIS_MODULE;
-@@ -1168,13 +1180,6 @@
- aic3x_write(codec, AIC3X_PAGE_SELECT, PAGE0_SELECT);
- aic3x_write(codec, AIC3X_RESET, SOFT_RESET);
-
-- /* register pcms */
-- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-- if (ret < 0) {
-- printk(KERN_ERR "aic3x: failed to create pcms\n");
-- goto pcm_err;
-- }
--
- /* DAC default volume and mute */
- aic3x_write(codec, LDAC_VOL, DEFAULT_VOL | MUTE_ON);
- aic3x_write(codec, RDAC_VOL, DEFAULT_VOL | MUTE_ON);
-@@ -1241,30 +1246,51 @@
- /* off, with power on */
- aic3x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-- /* setup GPIO functions */
-- aic3x_write(codec, AIC3X_GPIO1_REG, (setup->gpio_func[0] & 0xf) << 4);
-- aic3x_write(codec, AIC3X_GPIO2_REG, (setup->gpio_func[1] & 0xf) << 4);
-+ return 0;
-+}
-+
-+static struct snd_soc_codec *aic3x_codec;
-
-- snd_soc_add_controls(codec, aic3x_snd_controls,
-- ARRAY_SIZE(aic3x_snd_controls));
-- aic3x_add_widgets(codec);
-- ret = snd_soc_init_card(socdev);
-+static int aic3x_register(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+
-+ ret = aic3x_init(codec);
- if (ret < 0) {
-- printk(KERN_ERR "aic3x: failed to register card\n");
-- goto card_err;
-+ dev_err(codec->dev, "Failed to initialise device\n");
-+ return ret;
- }
-
-- return ret;
-+ aic3x_codec = codec;
-
--card_err:
-- snd_soc_free_pcms(socdev);
-- snd_soc_dapm_free(socdev);
--pcm_err:
-- kfree(codec->reg_cache);
-- return ret;
-+ ret = snd_soc_register_codec(codec);
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to register codec\n");
-+ return ret;
-+ }
-+
-+ ret = snd_soc_register_dai(&aic3x_dai);
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to register dai\n");
-+ snd_soc_unregister_codec(codec);
-+ return ret;
-+ }
-+
-+ return 0;
- }
-
--static struct snd_soc_device *aic3x_socdev;
-+static int aic3x_unregister(struct aic3x_priv *aic3x)
-+{
-+ aic3x_set_bias_level(&aic3x->codec, SND_SOC_BIAS_OFF);
-+
-+ snd_soc_unregister_dai(&aic3x_dai);
-+ snd_soc_unregister_codec(&aic3x->codec);
-+
-+ kfree(aic3x);
-+ aic3x_codec = NULL;
-+
-+ return 0;
-+}
-
- #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- /*
-@@ -1279,28 +1305,36 @@
- static int aic3x_i2c_probe(struct i2c_client *i2c,
- const struct i2c_device_id *id)
- {
-- struct snd_soc_device *socdev = aic3x_socdev;
-- struct snd_soc_codec *codec = socdev->card->codec;
-- int ret;
-+ struct snd_soc_codec *codec;
-+ struct aic3x_priv *aic3x;
-
-- i2c_set_clientdata(i2c, codec);
-+ aic3x = kzalloc(sizeof(struct aic3x_priv), GFP_KERNEL);
-+ if (aic3x == NULL) {
-+ dev_err(&i2c->dev, "failed to create private data\n");
-+ return -ENOMEM;
-+ }
-+
-+ codec = &aic3x->codec;
-+ codec->dev = &i2c->dev;
-+ codec->private_data = aic3x;
- codec->control_data = i2c;
-+ codec->hw_write = (hw_write_t) i2c_master_send;
-
-- ret = aic3x_init(socdev);
-- if (ret < 0)
-- printk(KERN_ERR "aic3x: failed to initialise AIC3X\n");
-- return ret;
-+ i2c_set_clientdata(i2c, aic3x);
-+
-+ return aic3x_register(codec);
- }
-
- static int aic3x_i2c_remove(struct i2c_client *client)
- {
-- struct snd_soc_codec *codec = i2c_get_clientdata(client);
-- kfree(codec->reg_cache);
-- return 0;
-+ struct aic3x_priv *aic3x = i2c_get_clientdata(client);
-+
-+ return aic3x_unregister(aic3x);
- }
-
- static const struct i2c_device_id aic3x_i2c_id[] = {
- { "tlv320aic3x", 0 },
-+ { "tlv320aic33", 0 },
- { }
- };
- MODULE_DEVICE_TABLE(i2c, aic3x_i2c_id);
-@@ -1311,56 +1345,28 @@
- .name = "aic3x I2C Codec",
- .owner = THIS_MODULE,
- },
-- .probe = aic3x_i2c_probe,
-+ .probe = aic3x_i2c_probe,
- .remove = aic3x_i2c_remove,
- .id_table = aic3x_i2c_id,
- };
-
--static int aic3x_i2c_read(struct i2c_client *client, u8 *value, int len)
--{
-- value[0] = i2c_smbus_read_byte_data(client, value[0]);
-- return (len == 1);
--}
--
--static int aic3x_add_i2c_device(struct platform_device *pdev,
-- const struct aic3x_setup_data *setup)
-+static inline void aic3x_i2c_init(void)
- {
-- struct i2c_board_info info;
-- struct i2c_adapter *adapter;
-- struct i2c_client *client;
- int ret;
-
- ret = i2c_add_driver(&aic3x_i2c_driver);
-- if (ret != 0) {
-- dev_err(&pdev->dev, "can't add i2c driver\n");
-- return ret;
-- }
--
-- memset(&info, 0, sizeof(struct i2c_board_info));
-- info.addr = setup->i2c_address;
-- strlcpy(info.type, "tlv320aic3x", I2C_NAME_SIZE);
--
-- adapter = i2c_get_adapter(setup->i2c_bus);
-- if (!adapter) {
-- dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-- setup->i2c_bus);
-- goto err_driver;
-- }
--
-- client = i2c_new_device(adapter, &info);
-- i2c_put_adapter(adapter);
-- if (!client) {
-- dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-- (unsigned int)info.addr);
-- goto err_driver;
-- }
--
-- return 0;
-+ if (ret)
-+ printk(KERN_ERR "%s: error regsitering i2c driver, %d\n",
-+ __func__, ret);
-+}
-
--err_driver:
-+static inline void aic3x_i2c_exit(void)
-+{
- i2c_del_driver(&aic3x_i2c_driver);
-- return -ENODEV;
- }
-+#else
-+static inline void aic3x_i2c_init(void) { }
-+static inline void aic3x_i2c_exit(void) { }
- #endif
-
- static int aic3x_probe(struct platform_device *pdev)
-@@ -1368,43 +1374,51 @@
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct aic3x_setup_data *setup;
- struct snd_soc_codec *codec;
-- struct aic3x_priv *aic3x;
- int ret = 0;
-
-- printk(KERN_INFO "AIC3X Audio Codec %s\n", AIC3X_VERSION);
-+ codec = aic3x_codec;
-+ if (!codec) {
-+ dev_err(&pdev->dev, "Codec not registered\n");
-+ return -ENODEV;
-+ }
-
-+ socdev->card->codec = codec;
- setup = socdev->codec_data;
-- codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-- if (codec == NULL)
-- return -ENOMEM;
-
-- aic3x = kzalloc(sizeof(struct aic3x_priv), GFP_KERNEL);
-- if (aic3x == NULL) {
-- kfree(codec);
-- return -ENOMEM;
-+ if (setup) {
-+ /* setup GPIO functions */
-+ aic3x_write(codec, AIC3X_GPIO1_REG,
-+ (setup->gpio_func[0] & 0xf) << 4);
-+ aic3x_write(codec, AIC3X_GPIO2_REG,
-+ (setup->gpio_func[1] & 0xf) << 4);
- }
-
-- codec->private_data = aic3x;
-- socdev->card->codec = codec;
-- mutex_init(&codec->mutex);
-- INIT_LIST_HEAD(&codec->dapm_widgets);
-- INIT_LIST_HEAD(&codec->dapm_paths);
--
-- aic3x_socdev = socdev;
--#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t) i2c_master_send;
-- codec->hw_read = (hw_read_t) aic3x_i2c_read;
-- ret = aic3x_add_i2c_device(pdev, setup);
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ printk(KERN_ERR "aic3x: failed to create pcms\n");
-+ goto pcm_err;
- }
--#else
-- /* Add other interfaces here */
--#endif
-
-- if (ret != 0) {
-- kfree(codec->private_data);
-- kfree(codec);
-+ snd_soc_add_controls(codec, aic3x_snd_controls,
-+ ARRAY_SIZE(aic3x_snd_controls));
-+
-+ aic3x_add_widgets(codec);
-+
-+ ret = snd_soc_init_card(socdev);
-+ if (ret < 0) {
-+ printk(KERN_ERR "aic3x: failed to register card\n");
-+ goto card_err;
- }
-+
-+ return ret;
-+
-+card_err:
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+
-+pcm_err:
-+ kfree(codec->reg_cache);
- return ret;
- }
-
-@@ -1419,12 +1433,8 @@
-
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
--#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-- i2c_unregister_device(codec->control_data);
-- i2c_del_driver(&aic3x_i2c_driver);
--#endif
-- kfree(codec->private_data);
-- kfree(codec);
-+
-+ kfree(codec->reg_cache);
-
- return 0;
- }
-@@ -1439,13 +1449,15 @@
-
- static int __init aic3x_modinit(void)
- {
-- return snd_soc_register_dai(&aic3x_dai);
-+ aic3x_i2c_init();
-+
-+ return 0;
- }
- module_init(aic3x_modinit);
-
- static void __exit aic3x_exit(void)
- {
-- snd_soc_unregister_dai(&aic3x_dai);
-+ aic3x_i2c_exit();
- }
- module_exit(aic3x_exit);
-
-Index: linux-2.6.30/sound/soc/codecs/tlv320aic3x.h
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/tlv320aic3x.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/tlv320aic3x.h 2011-02-01 16:40:30.181004049 +0100
-@@ -282,8 +282,6 @@
- int aic3x_button_pressed(struct snd_soc_codec *codec);
-
- struct aic3x_setup_data {
-- int i2c_bus;
-- unsigned short i2c_address;
- unsigned int gpio_func[2];
- };
-
-Index: linux-2.6.30/sound/soc/codecs/twl4030.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/twl4030.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/twl4030.c 2011-02-01 16:40:30.181004049 +0100
-@@ -115,6 +115,7 @@
- 0x00, /* REG_VIBRA_PWM_SET (0x47) */
- 0x00, /* REG_ANAMIC_GAIN (0x48) */
- 0x00, /* REG_MISC_SET_2 (0x49) */
-+ 0x00, /* REG_SW_SHADOW (0x4A) - Shadow, non HW register */
- };
-
- /* codec private data */
-@@ -125,6 +126,17 @@
-
- struct snd_pcm_substream *master_substream;
- struct snd_pcm_substream *slave_substream;
-+
-+ unsigned int configured;
-+ unsigned int rate;
-+ unsigned int sample_bits;
-+ unsigned int channels;
-+
-+ unsigned int sysclk;
-+
-+ /* Headset output state handling */
-+ unsigned int hsl_enabled;
-+ unsigned int hsr_enabled;
- };
-
- /*
-@@ -161,7 +173,11 @@
- unsigned int reg, unsigned int value)
- {
- twl4030_write_reg_cache(codec, reg, value);
-- return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg);
-+ if (likely(reg < TWL4030_REG_SW_SHADOW))
-+ return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value,
-+ reg);
-+ else
-+ return 0;
- }
-
- static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable)
-@@ -188,6 +204,7 @@
-
- static void twl4030_init_chip(struct snd_soc_codec *codec)
- {
-+ u8 *cache = codec->reg_cache;
- int i;
-
- /* clear CODECPDZ prior to setting register defaults */
-@@ -195,7 +212,7 @@
-
- /* set all audio section registers to reasonable defaults */
- for (i = TWL4030_REG_OPTION; i <= TWL4030_REG_MISC_SET_2; i++)
-- twl4030_write(codec, i, twl4030_reg[i]);
-+ twl4030_write(codec, i, cache[i]);
-
- }
-
-@@ -208,55 +225,11 @@
- return;
-
- if (mute) {
-- /* Bypass the reg_cache and mute the volumes
-- * Headset mute is done in it's own event handler
-- * Things to mute: Earpiece, PreDrivL/R, CarkitL/R
-- */
-- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_EAR_CTL);
-- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-- reg_val & (~TWL4030_EAR_GAIN),
-- TWL4030_REG_EAR_CTL);
--
-- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_PREDL_CTL);
-- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-- reg_val & (~TWL4030_PREDL_GAIN),
-- TWL4030_REG_PREDL_CTL);
-- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_PREDR_CTL);
-- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-- reg_val & (~TWL4030_PREDR_GAIN),
-- TWL4030_REG_PREDL_CTL);
--
-- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_PRECKL_CTL);
-- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-- reg_val & (~TWL4030_PRECKL_GAIN),
-- TWL4030_REG_PRECKL_CTL);
-- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_PRECKR_CTL);
-- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-- reg_val & (~TWL4030_PRECKL_GAIN),
-- TWL4030_REG_PRECKR_CTL);
--
- /* Disable PLL */
- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_APLL_CTL);
- reg_val &= ~TWL4030_APLL_EN;
- twl4030_write(codec, TWL4030_REG_APLL_CTL, reg_val);
- } else {
-- /* Restore the volumes
-- * Headset mute is done in it's own event handler
-- * Things to restore: Earpiece, PreDrivL/R, CarkitL/R
-- */
-- twl4030_write(codec, TWL4030_REG_EAR_CTL,
-- twl4030_read_reg_cache(codec, TWL4030_REG_EAR_CTL));
--
-- twl4030_write(codec, TWL4030_REG_PREDL_CTL,
-- twl4030_read_reg_cache(codec, TWL4030_REG_PREDL_CTL));
-- twl4030_write(codec, TWL4030_REG_PREDR_CTL,
-- twl4030_read_reg_cache(codec, TWL4030_REG_PREDR_CTL));
--
-- twl4030_write(codec, TWL4030_REG_PRECKL_CTL,
-- twl4030_read_reg_cache(codec, TWL4030_REG_PRECKL_CTL));
-- twl4030_write(codec, TWL4030_REG_PRECKR_CTL,
-- twl4030_read_reg_cache(codec, TWL4030_REG_PRECKR_CTL));
--
- /* Enable PLL */
- reg_val = twl4030_read_reg_cache(codec, TWL4030_REG_APLL_CTL);
- reg_val |= TWL4030_APLL_EN;
-@@ -316,104 +289,60 @@
- }
-
- /* Earpiece */
--static const char *twl4030_earpiece_texts[] =
-- {"Off", "DACL1", "DACL2", "DACR1"};
--
--static const unsigned int twl4030_earpiece_values[] =
-- {0x0, 0x1, 0x2, 0x4};
--
--static const struct soc_enum twl4030_earpiece_enum =
-- SOC_VALUE_ENUM_SINGLE(TWL4030_REG_EAR_CTL, 1, 0x7,
-- ARRAY_SIZE(twl4030_earpiece_texts),
-- twl4030_earpiece_texts,
-- twl4030_earpiece_values);
--
--static const struct snd_kcontrol_new twl4030_dapm_earpiece_control =
--SOC_DAPM_VALUE_ENUM("Route", twl4030_earpiece_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_earpiece_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_EAR_CTL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_EAR_CTL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_EAR_CTL, 2, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_EAR_CTL, 3, 1, 0),
-+};
-
- /* PreDrive Left */
--static const char *twl4030_predrivel_texts[] =
-- {"Off", "DACL1", "DACL2", "DACR2"};
--
--static const unsigned int twl4030_predrivel_values[] =
-- {0x0, 0x1, 0x2, 0x4};
--
--static const struct soc_enum twl4030_predrivel_enum =
-- SOC_VALUE_ENUM_SINGLE(TWL4030_REG_PREDL_CTL, 1, 0x7,
-- ARRAY_SIZE(twl4030_predrivel_texts),
-- twl4030_predrivel_texts,
-- twl4030_predrivel_values);
--
--static const struct snd_kcontrol_new twl4030_dapm_predrivel_control =
--SOC_DAPM_VALUE_ENUM("Route", twl4030_predrivel_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_predrivel_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_PREDL_CTL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_PREDL_CTL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PREDL_CTL, 2, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PREDL_CTL, 3, 1, 0),
-+};
-
- /* PreDrive Right */
--static const char *twl4030_predriver_texts[] =
-- {"Off", "DACR1", "DACR2", "DACL2"};
--
--static const unsigned int twl4030_predriver_values[] =
-- {0x0, 0x1, 0x2, 0x4};
--
--static const struct soc_enum twl4030_predriver_enum =
-- SOC_VALUE_ENUM_SINGLE(TWL4030_REG_PREDR_CTL, 1, 0x7,
-- ARRAY_SIZE(twl4030_predriver_texts),
-- twl4030_predriver_texts,
-- twl4030_predriver_values);
--
--static const struct snd_kcontrol_new twl4030_dapm_predriver_control =
--SOC_DAPM_VALUE_ENUM("Route", twl4030_predriver_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_predriver_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_PREDR_CTL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_PREDR_CTL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PREDR_CTL, 2, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PREDR_CTL, 3, 1, 0),
-+};
-
- /* Headset Left */
--static const char *twl4030_hsol_texts[] =
-- {"Off", "DACL1", "DACL2"};
--
--static const struct soc_enum twl4030_hsol_enum =
-- SOC_ENUM_SINGLE(TWL4030_REG_HS_SEL, 1,
-- ARRAY_SIZE(twl4030_hsol_texts),
-- twl4030_hsol_texts);
--
--static const struct snd_kcontrol_new twl4030_dapm_hsol_control =
--SOC_DAPM_ENUM("Route", twl4030_hsol_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_hsol_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_HS_SEL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_HS_SEL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_HS_SEL, 2, 1, 0),
-+};
-
- /* Headset Right */
--static const char *twl4030_hsor_texts[] =
-- {"Off", "DACR1", "DACR2"};
--
--static const struct soc_enum twl4030_hsor_enum =
-- SOC_ENUM_SINGLE(TWL4030_REG_HS_SEL, 4,
-- ARRAY_SIZE(twl4030_hsor_texts),
-- twl4030_hsor_texts);
--
--static const struct snd_kcontrol_new twl4030_dapm_hsor_control =
--SOC_DAPM_ENUM("Route", twl4030_hsor_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_hsor_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_HS_SEL, 3, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_HS_SEL, 4, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_HS_SEL, 5, 1, 0),
-+};
-
- /* Carkit Left */
--static const char *twl4030_carkitl_texts[] =
-- {"Off", "DACL1", "DACL2"};
--
--static const struct soc_enum twl4030_carkitl_enum =
-- SOC_ENUM_SINGLE(TWL4030_REG_PRECKL_CTL, 1,
-- ARRAY_SIZE(twl4030_carkitl_texts),
-- twl4030_carkitl_texts);
--
--static const struct snd_kcontrol_new twl4030_dapm_carkitl_control =
--SOC_DAPM_ENUM("Route", twl4030_carkitl_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_carkitl_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_PRECKL_CTL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_PRECKL_CTL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PRECKL_CTL, 2, 1, 0),
-+};
-
- /* Carkit Right */
--static const char *twl4030_carkitr_texts[] =
-- {"Off", "DACR1", "DACR2"};
--
--static const struct soc_enum twl4030_carkitr_enum =
-- SOC_ENUM_SINGLE(TWL4030_REG_PRECKR_CTL, 1,
-- ARRAY_SIZE(twl4030_carkitr_texts),
-- twl4030_carkitr_texts);
--
--static const struct snd_kcontrol_new twl4030_dapm_carkitr_control =
--SOC_DAPM_ENUM("Route", twl4030_carkitr_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_carkitr_controls[] = {
-+ SOC_DAPM_SINGLE("Voice", TWL4030_REG_PRECKR_CTL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_PRECKR_CTL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PRECKR_CTL, 2, 1, 0),
-+};
-
- /* Handsfree Left */
- static const char *twl4030_handsfreel_texts[] =
-- {"Voice", "DACL1", "DACL2", "DACR2"};
-+ {"Voice", "AudioL1", "AudioL2", "AudioR2"};
-
- static const struct soc_enum twl4030_handsfreel_enum =
- SOC_ENUM_SINGLE(TWL4030_REG_HFL_CTL, 0,
-@@ -423,9 +352,13 @@
- static const struct snd_kcontrol_new twl4030_dapm_handsfreel_control =
- SOC_DAPM_ENUM("Route", twl4030_handsfreel_enum);
-
-+/* Handsfree Left virtual mute */
-+static const struct snd_kcontrol_new twl4030_dapm_handsfreelmute_control =
-+ SOC_DAPM_SINGLE("Switch", TWL4030_REG_SW_SHADOW, 0, 1, 0);
-+
- /* Handsfree Right */
- static const char *twl4030_handsfreer_texts[] =
-- {"Voice", "DACR1", "DACR2", "DACL2"};
-+ {"Voice", "AudioR1", "AudioR2", "AudioL2"};
-
- static const struct soc_enum twl4030_handsfreer_enum =
- SOC_ENUM_SINGLE(TWL4030_REG_HFR_CTL, 0,
-@@ -435,37 +368,52 @@
- static const struct snd_kcontrol_new twl4030_dapm_handsfreer_control =
- SOC_DAPM_ENUM("Route", twl4030_handsfreer_enum);
-
--/* Left analog microphone selection */
--static const char *twl4030_analoglmic_texts[] =
-- {"Off", "Main mic", "Headset mic", "AUXL", "Carkit mic"};
--
--static const unsigned int twl4030_analoglmic_values[] =
-- {0x0, 0x1, 0x2, 0x4, 0x8};
-+/* Handsfree Right virtual mute */
-+static const struct snd_kcontrol_new twl4030_dapm_handsfreermute_control =
-+ SOC_DAPM_SINGLE("Switch", TWL4030_REG_SW_SHADOW, 1, 1, 0);
-+
-+/* Vibra */
-+/* Vibra audio path selection */
-+static const char *twl4030_vibra_texts[] =
-+ {"AudioL1", "AudioR1", "AudioL2", "AudioR2"};
-+
-+static const struct soc_enum twl4030_vibra_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_VIBRA_CTL, 2,
-+ ARRAY_SIZE(twl4030_vibra_texts),
-+ twl4030_vibra_texts);
-+
-+static const struct snd_kcontrol_new twl4030_dapm_vibra_control =
-+SOC_DAPM_ENUM("Route", twl4030_vibra_enum);
-+
-+/* Vibra path selection: local vibrator (PWM) or audio driven */
-+static const char *twl4030_vibrapath_texts[] =
-+ {"Local vibrator", "Audio"};
-+
-+static const struct soc_enum twl4030_vibrapath_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_VIBRA_CTL, 4,
-+ ARRAY_SIZE(twl4030_vibrapath_texts),
-+ twl4030_vibrapath_texts);
-
--static const struct soc_enum twl4030_analoglmic_enum =
-- SOC_VALUE_ENUM_SINGLE(TWL4030_REG_ANAMICL, 0, 0xf,
-- ARRAY_SIZE(twl4030_analoglmic_texts),
-- twl4030_analoglmic_texts,
-- twl4030_analoglmic_values);
-+static const struct snd_kcontrol_new twl4030_dapm_vibrapath_control =
-+SOC_DAPM_ENUM("Route", twl4030_vibrapath_enum);
-
--static const struct snd_kcontrol_new twl4030_dapm_analoglmic_control =
--SOC_DAPM_VALUE_ENUM("Route", twl4030_analoglmic_enum);
-+/* Left analog microphone selection */
-+static const struct snd_kcontrol_new twl4030_dapm_analoglmic_controls[] = {
-+ SOC_DAPM_SINGLE("Main Mic Capture Switch",
-+ TWL4030_REG_ANAMICL, 0, 1, 0),
-+ SOC_DAPM_SINGLE("Headset Mic Capture Switch",
-+ TWL4030_REG_ANAMICL, 1, 1, 0),
-+ SOC_DAPM_SINGLE("AUXL Capture Switch",
-+ TWL4030_REG_ANAMICL, 2, 1, 0),
-+ SOC_DAPM_SINGLE("Carkit Mic Capture Switch",
-+ TWL4030_REG_ANAMICL, 3, 1, 0),
-+};
-
- /* Right analog microphone selection */
--static const char *twl4030_analogrmic_texts[] =
-- {"Off", "Sub mic", "AUXR"};
--
--static const unsigned int twl4030_analogrmic_values[] =
-- {0x0, 0x1, 0x4};
--
--static const struct soc_enum twl4030_analogrmic_enum =
-- SOC_VALUE_ENUM_SINGLE(TWL4030_REG_ANAMICR, 0, 0x5,
-- ARRAY_SIZE(twl4030_analogrmic_texts),
-- twl4030_analogrmic_texts,
-- twl4030_analogrmic_values);
--
--static const struct snd_kcontrol_new twl4030_dapm_analogrmic_control =
--SOC_DAPM_VALUE_ENUM("Route", twl4030_analogrmic_enum);
-+static const struct snd_kcontrol_new twl4030_dapm_analogrmic_controls[] = {
-+ SOC_DAPM_SINGLE("Sub Mic Capture Switch", TWL4030_REG_ANAMICR, 0, 1, 0),
-+ SOC_DAPM_SINGLE("AUXR Capture Switch", TWL4030_REG_ANAMICR, 2, 1, 0),
-+};
-
- /* TX1 L/R Analog/Digital microphone selection */
- static const char *twl4030_micpathtx1_texts[] =
-@@ -507,6 +455,10 @@
- static const struct snd_kcontrol_new twl4030_dapm_abypassl2_control =
- SOC_DAPM_SINGLE("Switch", TWL4030_REG_ARXL2_APGA_CTL, 2, 1, 0);
-
-+/* Analog bypass for Voice */
-+static const struct snd_kcontrol_new twl4030_dapm_abypassv_control =
-+ SOC_DAPM_SINGLE("Switch", TWL4030_REG_VDL_APGA_CTL, 2, 1, 0);
-+
- /* Digital bypass gain, 0 mutes the bypass */
- static const unsigned int twl4030_dapm_dbypass_tlv[] = {
- TLV_DB_RANGE_HEAD(2),
-@@ -526,6 +478,18 @@
- TWL4030_REG_ATX2ARXPGA, 0, 7, 0,
- twl4030_dapm_dbypass_tlv);
-
-+/*
-+ * Voice Sidetone GAIN volume control:
-+ * from -51 to -10 dB in 1 dB steps (mute instead of -51 dB)
-+ */
-+static DECLARE_TLV_DB_SCALE(twl4030_dapm_dbypassv_tlv, -5100, 100, 1);
-+
-+/* Digital bypass voice: sidetone (VUL -> VDL)*/
-+static const struct snd_kcontrol_new twl4030_dapm_dbypassv_control =
-+ SOC_DAPM_SINGLE_TLV("Volume",
-+ TWL4030_REG_VSTPGA, 0, 0x29, 0,
-+ twl4030_dapm_dbypassv_tlv);
-+
- static int micpath_event(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event)
- {
-@@ -556,63 +520,205 @@
- return 0;
- }
-
--static int handsfree_event(struct snd_soc_dapm_widget *w,
-- struct snd_kcontrol *kcontrol, int event)
-+/*
-+ * Output PGA builder:
-+ * Handle the muting and unmuting of the given output (turning off the
-+ * amplifier associated with the output pin)
-+ * On mute bypass the reg_cache and mute the volume
-+ * On unmute: restore the register content
-+ * Outputs handled in this way: Earpiece, PreDrivL/R, CarkitL/R
-+ */
-+#define TWL4030_OUTPUT_PGA(pin_name, reg, mask) \
-+static int pin_name##pga_event(struct snd_soc_dapm_widget *w, \
-+ struct snd_kcontrol *kcontrol, int event) \
-+{ \
-+ u8 reg_val; \
-+ \
-+ switch (event) { \
-+ case SND_SOC_DAPM_POST_PMU: \
-+ twl4030_write(w->codec, reg, \
-+ twl4030_read_reg_cache(w->codec, reg)); \
-+ break; \
-+ case SND_SOC_DAPM_POST_PMD: \
-+ reg_val = twl4030_read_reg_cache(w->codec, reg); \
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, \
-+ reg_val & (~mask), \
-+ reg); \
-+ break; \
-+ } \
-+ return 0; \
-+}
-+
-+TWL4030_OUTPUT_PGA(earpiece, TWL4030_REG_EAR_CTL, TWL4030_EAR_GAIN);
-+TWL4030_OUTPUT_PGA(predrivel, TWL4030_REG_PREDL_CTL, TWL4030_PREDL_GAIN);
-+TWL4030_OUTPUT_PGA(predriver, TWL4030_REG_PREDR_CTL, TWL4030_PREDR_GAIN);
-+TWL4030_OUTPUT_PGA(carkitl, TWL4030_REG_PRECKL_CTL, TWL4030_PRECKL_GAIN);
-+TWL4030_OUTPUT_PGA(carkitr, TWL4030_REG_PRECKR_CTL, TWL4030_PRECKR_GAIN);
-+
-+static void handsfree_ramp(struct snd_soc_codec *codec, int reg, int ramp)
- {
-- struct soc_enum *e = (struct soc_enum *)w->kcontrols->private_value;
- unsigned char hs_ctl;
-
-- hs_ctl = twl4030_read_reg_cache(w->codec, e->reg);
-+ hs_ctl = twl4030_read_reg_cache(codec, reg);
-
-- if (hs_ctl & TWL4030_HF_CTL_REF_EN) {
-+ if (ramp) {
-+ /* HF ramp-up */
-+ hs_ctl |= TWL4030_HF_CTL_REF_EN;
-+ twl4030_write(codec, reg, hs_ctl);
-+ udelay(10);
- hs_ctl |= TWL4030_HF_CTL_RAMP_EN;
-- twl4030_write(w->codec, e->reg, hs_ctl);
-+ twl4030_write(codec, reg, hs_ctl);
-+ udelay(40);
- hs_ctl |= TWL4030_HF_CTL_LOOP_EN;
-- twl4030_write(w->codec, e->reg, hs_ctl);
- hs_ctl |= TWL4030_HF_CTL_HB_EN;
-- twl4030_write(w->codec, e->reg, hs_ctl);
-+ twl4030_write(codec, reg, hs_ctl);
- } else {
-- hs_ctl &= ~(TWL4030_HF_CTL_RAMP_EN | TWL4030_HF_CTL_LOOP_EN
-- | TWL4030_HF_CTL_HB_EN);
-- twl4030_write(w->codec, e->reg, hs_ctl);
-+ /* HF ramp-down */
-+ hs_ctl &= ~TWL4030_HF_CTL_LOOP_EN;
-+ hs_ctl &= ~TWL4030_HF_CTL_HB_EN;
-+ twl4030_write(codec, reg, hs_ctl);
-+ hs_ctl &= ~TWL4030_HF_CTL_RAMP_EN;
-+ twl4030_write(codec, reg, hs_ctl);
-+ udelay(40);
-+ hs_ctl &= ~TWL4030_HF_CTL_REF_EN;
-+ twl4030_write(codec, reg, hs_ctl);
- }
-+}
-
-+static int handsfreelpga_event(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ switch (event) {
-+ case SND_SOC_DAPM_POST_PMU:
-+ handsfree_ramp(w->codec, TWL4030_REG_HFL_CTL, 1);
-+ break;
-+ case SND_SOC_DAPM_POST_PMD:
-+ handsfree_ramp(w->codec, TWL4030_REG_HFL_CTL, 0);
-+ break;
-+ }
- return 0;
- }
-
--static int headsetl_event(struct snd_soc_dapm_widget *w,
-+static int handsfreerpga_event(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event)
- {
-- unsigned char hs_gain, hs_pop;
--
-- /* Save the current volume */
-- hs_gain = twl4030_read_reg_cache(w->codec, TWL4030_REG_HS_GAIN_SET);
-- hs_pop = twl4030_read_reg_cache(w->codec, TWL4030_REG_HS_POPN_SET);
--
- switch (event) {
- case SND_SOC_DAPM_POST_PMU:
-- /* Do the anti-pop/bias ramp enable according to the TRM */
-- hs_pop |= TWL4030_VMID_EN;
-- twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-- /* Is this needed? Can we just use whatever gain here? */
-- twl4030_write(w->codec, TWL4030_REG_HS_GAIN_SET,
-- (hs_gain & (~0x0f)) | 0x0a);
-- hs_pop |= TWL4030_RAMP_EN;
-- twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
--
-- /* Restore the original volume */
-- twl4030_write(w->codec, TWL4030_REG_HS_GAIN_SET, hs_gain);
-+ handsfree_ramp(w->codec, TWL4030_REG_HFR_CTL, 1);
- break;
- case SND_SOC_DAPM_POST_PMD:
-- /* Do the anti-pop/bias ramp disable according to the TRM */
-+ handsfree_ramp(w->codec, TWL4030_REG_HFR_CTL, 0);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static void headset_ramp(struct snd_soc_codec *codec, int ramp)
-+{
-+ struct snd_soc_device *socdev = codec->socdev;
-+ struct twl4030_setup_data *setup = socdev->codec_data;
-+
-+ unsigned char hs_gain, hs_pop;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ /* Base values for ramp delay calculation: 2^19 - 2^26 */
-+ unsigned int ramp_base[] = {524288, 1048576, 2097152, 4194304,
-+ 8388608, 16777216, 33554432, 67108864};
-+
-+ hs_gain = twl4030_read_reg_cache(codec, TWL4030_REG_HS_GAIN_SET);
-+ hs_pop = twl4030_read_reg_cache(codec, TWL4030_REG_HS_POPN_SET);
-+
-+ /* Enable external mute control, this dramatically reduces
-+ * the pop-noise */
-+ if (setup && setup->hs_extmute) {
-+ if (setup->set_hs_extmute) {
-+ setup->set_hs_extmute(1);
-+ } else {
-+ hs_pop |= TWL4030_EXTMUTE;
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ }
-+ }
-+
-+ if (ramp) {
-+ /* Headset ramp-up according to the TRM */
-+ hs_pop |= TWL4030_VMID_EN;
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ twl4030_write(codec, TWL4030_REG_HS_GAIN_SET, hs_gain);
-+ hs_pop |= TWL4030_RAMP_EN;
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ /* Wait ramp delay time + 1, so the VMID can settle */
-+ mdelay((ramp_base[(hs_pop & TWL4030_RAMP_DELAY) >> 2] /
-+ twl4030->sysclk) + 1);
-+ } else {
-+ /* Headset ramp-down _not_ according to
-+ * the TRM, but in a way that it is working */
- hs_pop &= ~TWL4030_RAMP_EN;
-- twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ /* Wait ramp delay time + 1, so the VMID can settle */
-+ mdelay((ramp_base[(hs_pop & TWL4030_RAMP_DELAY) >> 2] /
-+ twl4030->sysclk) + 1);
- /* Bypass the reg_cache to mute the headset */
- twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
- hs_gain & (~0x0f),
- TWL4030_REG_HS_GAIN_SET);
-+
- hs_pop &= ~TWL4030_VMID_EN;
-- twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ }
-+
-+ /* Disable external mute */
-+ if (setup && setup->hs_extmute) {
-+ if (setup->set_hs_extmute) {
-+ setup->set_hs_extmute(0);
-+ } else {
-+ hs_pop &= ~TWL4030_EXTMUTE;
-+ twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ }
-+ }
-+}
-+
-+static int headsetlpga_event(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct twl4030_priv *twl4030 = w->codec->private_data;
-+
-+ switch (event) {
-+ case SND_SOC_DAPM_POST_PMU:
-+ /* Do the ramp-up only once */
-+ if (!twl4030->hsr_enabled)
-+ headset_ramp(w->codec, 1);
-+
-+ twl4030->hsl_enabled = 1;
-+ break;
-+ case SND_SOC_DAPM_POST_PMD:
-+ /* Do the ramp-down only if both headsetL/R is disabled */
-+ if (!twl4030->hsr_enabled)
-+ headset_ramp(w->codec, 0);
-+
-+ twl4030->hsl_enabled = 0;
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int headsetrpga_event(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct twl4030_priv *twl4030 = w->codec->private_data;
-+
-+ switch (event) {
-+ case SND_SOC_DAPM_POST_PMU:
-+ /* Do the ramp-up only once */
-+ if (!twl4030->hsl_enabled)
-+ headset_ramp(w->codec, 1);
-+
-+ twl4030->hsr_enabled = 1;
-+ break;
-+ case SND_SOC_DAPM_POST_PMD:
-+ /* Do the ramp-down only if both headsetL/R is disabled */
-+ if (!twl4030->hsl_enabled)
-+ headset_ramp(w->codec, 0);
-+
-+ twl4030->hsr_enabled = 0;
- break;
- }
- return 0;
-@@ -624,11 +730,23 @@
- struct soc_mixer_control *m =
- (struct soc_mixer_control *)w->kcontrols->private_value;
- struct twl4030_priv *twl4030 = w->codec->private_data;
-- unsigned char reg;
-+ unsigned char reg, misc;
-
- reg = twl4030_read_reg_cache(w->codec, m->reg);
-
-- if (m->reg <= TWL4030_REG_ARXR2_APGA_CTL) {
-+ /*
-+ * bypass_state[0:3] - analog HiFi bypass
-+ * bypass_state[4] - analog voice bypass
-+ * bypass_state[5] - digital voice bypass
-+ * bypass_state[6:7] - digital HiFi bypass
-+ */
-+ if (m->reg == TWL4030_REG_VSTPGA) {
-+ /* Voice digital bypass */
-+ if (reg)
-+ twl4030->bypass_state |= (1 << 5);
-+ else
-+ twl4030->bypass_state &= ~(1 << 5);
-+ } else if (m->reg <= TWL4030_REG_ARXR2_APGA_CTL) {
- /* Analog bypass */
- if (reg & (1 << m->shift))
- twl4030->bypass_state |=
-@@ -636,14 +754,28 @@
- else
- twl4030->bypass_state &=
- ~(1 << (m->reg - TWL4030_REG_ARXL1_APGA_CTL));
-+ } else if (m->reg == TWL4030_REG_VDL_APGA_CTL) {
-+ /* Analog voice bypass */
-+ if (reg & (1 << m->shift))
-+ twl4030->bypass_state |= (1 << 4);
-+ else
-+ twl4030->bypass_state &= ~(1 << 4);
- } else {
- /* Digital bypass */
- if (reg & (0x7 << m->shift))
-- twl4030->bypass_state |= (1 << (m->shift ? 5 : 4));
-+ twl4030->bypass_state |= (1 << (m->shift ? 7 : 6));
- else
-- twl4030->bypass_state &= ~(1 << (m->shift ? 5 : 4));
-+ twl4030->bypass_state &= ~(1 << (m->shift ? 7 : 6));
- }
-
-+ /* Enable master analog loopback mode if any analog switch is enabled*/
-+ misc = twl4030_read_reg_cache(w->codec, TWL4030_REG_MISC_SET_1);
-+ if (twl4030->bypass_state & 0x1F)
-+ misc |= TWL4030_FMLOOP_EN;
-+ else
-+ misc &= ~TWL4030_FMLOOP_EN;
-+ twl4030_write(w->codec, TWL4030_REG_MISC_SET_1, misc);
-+
- if (w->codec->bias_level == SND_SOC_BIAS_STANDBY) {
- if (twl4030->bypass_state)
- twl4030_codec_mute(w->codec, 0);
-@@ -810,6 +942,48 @@
- return err;
- }
-
-+/* Codec operation modes */
-+static const char *twl4030_op_modes_texts[] = {
-+ "Option 2 (voice/audio)", "Option 1 (audio)"
-+};
-+
-+static const struct soc_enum twl4030_op_modes_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_CODEC_MODE, 0,
-+ ARRAY_SIZE(twl4030_op_modes_texts),
-+ twl4030_op_modes_texts);
-+
-+static int snd_soc_put_twl4030_opmode_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ unsigned short val;
-+ unsigned short mask, bitmask;
-+
-+ if (twl4030->configured) {
-+ printk(KERN_ERR "twl4030 operation mode cannot be "
-+ "changed on-the-fly\n");
-+ return -EBUSY;
-+ }
-+
-+ for (bitmask = 1; bitmask < e->max; bitmask <<= 1)
-+ ;
-+ if (ucontrol->value.enumerated.item[0] > e->max - 1)
-+ return -EINVAL;
-+
-+ val = ucontrol->value.enumerated.item[0] << e->shift_l;
-+ mask = (bitmask - 1) << e->shift_l;
-+ if (e->shift_l != e->shift_r) {
-+ if (ucontrol->value.enumerated.item[1] > e->max - 1)
-+ return -EINVAL;
-+ val |= ucontrol->value.enumerated.item[1] << e->shift_r;
-+ mask |= (bitmask - 1) << e->shift_r;
-+ }
-+
-+ return snd_soc_update_bits(codec, e->reg, mask, val);
-+}
-+
- /*
- * FGAIN volume control:
- * from -62 to 0 dB in 1 dB steps (mute instead of -63 dB)
-@@ -824,6 +998,12 @@
- static DECLARE_TLV_DB_SCALE(digital_coarse_tlv, 0, 600, 0);
-
- /*
-+ * Voice Downlink GAIN volume control:
-+ * from -37 to 12 dB in 1 dB steps (mute instead of -37 dB)
-+ */
-+static DECLARE_TLV_DB_SCALE(digital_voice_downlink_tlv, -3700, 100, 1);
-+
-+/*
- * Analog playback gain
- * -24 dB to 12 dB in 2 dB steps
- */
-@@ -853,6 +1033,16 @@
- */
- static DECLARE_TLV_DB_SCALE(input_gain_tlv, 0, 600, 0);
-
-+/* AVADC clock priority */
-+static const char *twl4030_avadc_clk_priority_texts[] = {
-+ "Voice high priority", "HiFi high priority"
-+};
-+
-+static const struct soc_enum twl4030_avadc_clk_priority_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_AVADC_CTL, 2,
-+ ARRAY_SIZE(twl4030_avadc_clk_priority_texts),
-+ twl4030_avadc_clk_priority_texts);
-+
- static const char *twl4030_rampdelay_texts[] = {
- "27/20/14 ms", "55/40/27 ms", "109/81/55 ms", "218/161/109 ms",
- "437/323/218 ms", "874/645/437 ms", "1748/1291/874 ms",
-@@ -864,7 +1054,32 @@
- ARRAY_SIZE(twl4030_rampdelay_texts),
- twl4030_rampdelay_texts);
-
-+/* Vibra H-bridge direction mode */
-+static const char *twl4030_vibradirmode_texts[] = {
-+ "Vibra H-bridge direction", "Audio data MSB",
-+};
-+
-+static const struct soc_enum twl4030_vibradirmode_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_VIBRA_CTL, 5,
-+ ARRAY_SIZE(twl4030_vibradirmode_texts),
-+ twl4030_vibradirmode_texts);
-+
-+/* Vibra H-bridge direction */
-+static const char *twl4030_vibradir_texts[] = {
-+ "Positive polarity", "Negative polarity",
-+};
-+
-+static const struct soc_enum twl4030_vibradir_enum =
-+ SOC_ENUM_SINGLE(TWL4030_REG_VIBRA_CTL, 1,
-+ ARRAY_SIZE(twl4030_vibradir_texts),
-+ twl4030_vibradir_texts);
-+
- static const struct snd_kcontrol_new twl4030_snd_controls[] = {
-+ /* Codec operation mode control */
-+ SOC_ENUM_EXT("Codec Operation Mode", twl4030_op_modes_enum,
-+ snd_soc_get_enum_double,
-+ snd_soc_put_twl4030_opmode_enum_double),
-+
- /* Common playback gain controls */
- SOC_DOUBLE_R_TLV("DAC1 Digital Fine Playback Volume",
- TWL4030_REG_ARXL1PGA, TWL4030_REG_ARXR1PGA,
-@@ -893,6 +1108,16 @@
- TWL4030_REG_ARXL2_APGA_CTL, TWL4030_REG_ARXR2_APGA_CTL,
- 1, 1, 0),
-
-+ /* Common voice downlink gain controls */
-+ SOC_SINGLE_TLV("DAC Voice Digital Downlink Volume",
-+ TWL4030_REG_VRXPGA, 0, 0x31, 0, digital_voice_downlink_tlv),
-+
-+ SOC_SINGLE_TLV("DAC Voice Analog Downlink Volume",
-+ TWL4030_REG_VDL_APGA_CTL, 3, 0x12, 1, analog_tlv),
-+
-+ SOC_SINGLE("DAC Voice Analog Downlink Switch",
-+ TWL4030_REG_VDL_APGA_CTL, 1, 1, 0),
-+
- /* Separate output gain controls */
- SOC_DOUBLE_R_TLV_TWL4030("PreDriv Playback Volume",
- TWL4030_REG_PREDL_CTL, TWL4030_REG_PREDR_CTL,
-@@ -919,7 +1144,12 @@
- SOC_DOUBLE_TLV("Analog Capture Volume", TWL4030_REG_ANAMIC_GAIN,
- 0, 3, 5, 0, input_gain_tlv),
-
-+ SOC_ENUM("AVADC Clock Priority", twl4030_avadc_clk_priority_enum),
-+
- SOC_ENUM("HS ramp delay", twl4030_rampdelay_enum),
-+
-+ SOC_ENUM("Vibra H-bridge mode", twl4030_vibradirmode_enum),
-+ SOC_ENUM("Vibra H-bridge direction", twl4030_vibradir_enum),
- };
-
- static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
-@@ -947,26 +1177,19 @@
- SND_SOC_DAPM_OUTPUT("CARKITR"),
- SND_SOC_DAPM_OUTPUT("HFL"),
- SND_SOC_DAPM_OUTPUT("HFR"),
-+ SND_SOC_DAPM_OUTPUT("VIBRA"),
-
- /* DACs */
-- SND_SOC_DAPM_DAC("DAC Right1", "Right Front Playback",
-+ SND_SOC_DAPM_DAC("DAC Right1", "Right Front HiFi Playback",
- SND_SOC_NOPM, 0, 0),
-- SND_SOC_DAPM_DAC("DAC Left1", "Left Front Playback",
-+ SND_SOC_DAPM_DAC("DAC Left1", "Left Front HiFi Playback",
- SND_SOC_NOPM, 0, 0),
-- SND_SOC_DAPM_DAC("DAC Right2", "Right Rear Playback",
-+ SND_SOC_DAPM_DAC("DAC Right2", "Right Rear HiFi Playback",
- SND_SOC_NOPM, 0, 0),
-- SND_SOC_DAPM_DAC("DAC Left2", "Left Rear Playback",
-+ SND_SOC_DAPM_DAC("DAC Left2", "Left Rear HiFi Playback",
-+ SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_DAC("DAC Voice", "Voice Playback",
- SND_SOC_NOPM, 0, 0),
--
-- /* Analog PGAs */
-- SND_SOC_DAPM_PGA("ARXR1_APGA", TWL4030_REG_ARXR1_APGA_CTL,
-- 0, 0, NULL, 0),
-- SND_SOC_DAPM_PGA("ARXL1_APGA", TWL4030_REG_ARXL1_APGA_CTL,
-- 0, 0, NULL, 0),
-- SND_SOC_DAPM_PGA("ARXR2_APGA", TWL4030_REG_ARXR2_APGA_CTL,
-- 0, 0, NULL, 0),
-- SND_SOC_DAPM_PGA("ARXL2_APGA", TWL4030_REG_ARXL2_APGA_CTL,
-- 0, 0, NULL, 0),
-
- /* Analog bypasses */
- SND_SOC_DAPM_SWITCH_E("Right1 Analog Loopback", SND_SOC_NOPM, 0, 0,
-@@ -981,6 +1204,9 @@
- SND_SOC_DAPM_SWITCH_E("Left2 Analog Loopback", SND_SOC_NOPM, 0, 0,
- &twl4030_dapm_abypassl2_control,
- bypass_event, SND_SOC_DAPM_POST_REG),
-+ SND_SOC_DAPM_SWITCH_E("Voice Analog Loopback", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_abypassv_control,
-+ bypass_event, SND_SOC_DAPM_POST_REG),
-
- /* Digital bypasses */
- SND_SOC_DAPM_SWITCH_E("Left Digital Loopback", SND_SOC_NOPM, 0, 0,
-@@ -989,43 +1215,103 @@
- SND_SOC_DAPM_SWITCH_E("Right Digital Loopback", SND_SOC_NOPM, 0, 0,
- &twl4030_dapm_dbypassr_control, bypass_event,
- SND_SOC_DAPM_POST_REG),
-+ SND_SOC_DAPM_SWITCH_E("Voice Digital Loopback", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_dbypassv_control, bypass_event,
-+ SND_SOC_DAPM_POST_REG),
-
-- SND_SOC_DAPM_MIXER("Analog R1 Playback Mixer", TWL4030_REG_AVDAC_CTL,
-- 0, 0, NULL, 0),
-- SND_SOC_DAPM_MIXER("Analog L1 Playback Mixer", TWL4030_REG_AVDAC_CTL,
-- 1, 0, NULL, 0),
-- SND_SOC_DAPM_MIXER("Analog R2 Playback Mixer", TWL4030_REG_AVDAC_CTL,
-- 2, 0, NULL, 0),
-- SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer", TWL4030_REG_AVDAC_CTL,
-- 3, 0, NULL, 0),
-+ /* Digital mixers, power control for the physical DACs */
-+ SND_SOC_DAPM_MIXER("Digital R1 Playback Mixer",
-+ TWL4030_REG_AVDAC_CTL, 0, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Digital L1 Playback Mixer",
-+ TWL4030_REG_AVDAC_CTL, 1, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Digital R2 Playback Mixer",
-+ TWL4030_REG_AVDAC_CTL, 2, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Digital L2 Playback Mixer",
-+ TWL4030_REG_AVDAC_CTL, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Digital Voice Playback Mixer",
-+ TWL4030_REG_AVDAC_CTL, 4, 0, NULL, 0),
-+
-+ /* Analog mixers, power control for the physical PGAs */
-+ SND_SOC_DAPM_MIXER("Analog R1 Playback Mixer",
-+ TWL4030_REG_ARXR1_APGA_CTL, 0, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Analog L1 Playback Mixer",
-+ TWL4030_REG_ARXL1_APGA_CTL, 0, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Analog R2 Playback Mixer",
-+ TWL4030_REG_ARXR2_APGA_CTL, 0, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer",
-+ TWL4030_REG_ARXL2_APGA_CTL, 0, 0, NULL, 0),
-+ SND_SOC_DAPM_MIXER("Analog Voice Playback Mixer",
-+ TWL4030_REG_VDL_APGA_CTL, 0, 0, NULL, 0),
-
-- /* Output MUX controls */
-+ /* Output MIXER controls */
- /* Earpiece */
-- SND_SOC_DAPM_VALUE_MUX("Earpiece Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_earpiece_control),
-+ SND_SOC_DAPM_MIXER("Earpiece Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_earpiece_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_earpiece_controls)),
-+ SND_SOC_DAPM_PGA_E("Earpiece PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, earpiecepga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
- /* PreDrivL/R */
-- SND_SOC_DAPM_VALUE_MUX("PredriveL Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_predrivel_control),
-- SND_SOC_DAPM_VALUE_MUX("PredriveR Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_predriver_control),
-+ SND_SOC_DAPM_MIXER("PredriveL Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_predrivel_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_predrivel_controls)),
-+ SND_SOC_DAPM_PGA_E("PredriveL PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, predrivelpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_MIXER("PredriveR Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_predriver_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_predriver_controls)),
-+ SND_SOC_DAPM_PGA_E("PredriveR PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, predriverpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
- /* HeadsetL/R */
-- SND_SOC_DAPM_MUX_E("HeadsetL Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_hsol_control, headsetl_event,
-- SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-- SND_SOC_DAPM_MUX("HeadsetR Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_hsor_control),
-+ SND_SOC_DAPM_MIXER("HeadsetL Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_hsol_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_hsol_controls)),
-+ SND_SOC_DAPM_PGA_E("HeadsetL PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, headsetlpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_MIXER("HeadsetR Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_hsor_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_hsor_controls)),
-+ SND_SOC_DAPM_PGA_E("HeadsetR PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, headsetrpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
- /* CarkitL/R */
-- SND_SOC_DAPM_MUX("CarkitL Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_carkitl_control),
-- SND_SOC_DAPM_MUX("CarkitR Mux", SND_SOC_NOPM, 0, 0,
-- &twl4030_dapm_carkitr_control),
-+ SND_SOC_DAPM_MIXER("CarkitL Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_carkitl_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_carkitl_controls)),
-+ SND_SOC_DAPM_PGA_E("CarkitL PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, carkitlpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_MIXER("CarkitR Mixer", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_carkitr_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_carkitr_controls)),
-+ SND_SOC_DAPM_PGA_E("CarkitR PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, carkitrpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+
-+ /* Output MUX controls */
- /* HandsfreeL/R */
-- SND_SOC_DAPM_MUX_E("HandsfreeL Mux", TWL4030_REG_HFL_CTL, 5, 0,
-- &twl4030_dapm_handsfreel_control, handsfree_event,
-- SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-- SND_SOC_DAPM_MUX_E("HandsfreeR Mux", TWL4030_REG_HFR_CTL, 5, 0,
-- &twl4030_dapm_handsfreer_control, handsfree_event,
-- SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_MUX("HandsfreeL Mux", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_handsfreel_control),
-+ SND_SOC_DAPM_SWITCH("HandsfreeL", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_handsfreelmute_control),
-+ SND_SOC_DAPM_PGA_E("HandsfreeL PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, handsfreelpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_MUX("HandsfreeR Mux", SND_SOC_NOPM, 5, 0,
-+ &twl4030_dapm_handsfreer_control),
-+ SND_SOC_DAPM_SWITCH("HandsfreeR", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_handsfreermute_control),
-+ SND_SOC_DAPM_PGA_E("HandsfreeR PGA", SND_SOC_NOPM,
-+ 0, 0, NULL, 0, handsfreerpga_event,
-+ SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD),
-+ /* Vibra */
-+ SND_SOC_DAPM_MUX("Vibra Mux", TWL4030_REG_VIBRA_CTL, 0, 0,
-+ &twl4030_dapm_vibra_control),
-+ SND_SOC_DAPM_MUX("Vibra Route", SND_SOC_NOPM, 0, 0,
-+ &twl4030_dapm_vibrapath_control),
-
- /* Introducing four virtual ADC, since TWL4030 have four channel for
- capture */
-@@ -1050,11 +1336,15 @@
- SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD|
- SND_SOC_DAPM_POST_REG),
-
-- /* Analog input muxes with switch for the capture amplifiers */
-- SND_SOC_DAPM_VALUE_MUX("Analog Left Capture Route",
-- TWL4030_REG_ANAMICL, 4, 0, &twl4030_dapm_analoglmic_control),
-- SND_SOC_DAPM_VALUE_MUX("Analog Right Capture Route",
-- TWL4030_REG_ANAMICR, 4, 0, &twl4030_dapm_analogrmic_control),
-+ /* Analog input mixers for the capture amplifiers */
-+ SND_SOC_DAPM_MIXER("Analog Left",
-+ TWL4030_REG_ANAMICL, 4, 0,
-+ &twl4030_dapm_analoglmic_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_analoglmic_controls)),
-+ SND_SOC_DAPM_MIXER("Analog Right",
-+ TWL4030_REG_ANAMICR, 4, 0,
-+ &twl4030_dapm_analogrmic_controls[0],
-+ ARRAY_SIZE(twl4030_dapm_analogrmic_controls)),
-
- SND_SOC_DAPM_PGA("ADC Physical Left",
- TWL4030_REG_AVADC_CTL, 3, 0, NULL, 0),
-@@ -1073,74 +1363,103 @@
- };
-
- static const struct snd_soc_dapm_route intercon[] = {
-- {"Analog L1 Playback Mixer", NULL, "DAC Left1"},
-- {"Analog R1 Playback Mixer", NULL, "DAC Right1"},
-- {"Analog L2 Playback Mixer", NULL, "DAC Left2"},
-- {"Analog R2 Playback Mixer", NULL, "DAC Right2"},
--
-- {"ARXL1_APGA", NULL, "Analog L1 Playback Mixer"},
-- {"ARXR1_APGA", NULL, "Analog R1 Playback Mixer"},
-- {"ARXL2_APGA", NULL, "Analog L2 Playback Mixer"},
-- {"ARXR2_APGA", NULL, "Analog R2 Playback Mixer"},
-+ {"Digital L1 Playback Mixer", NULL, "DAC Left1"},
-+ {"Digital R1 Playback Mixer", NULL, "DAC Right1"},
-+ {"Digital L2 Playback Mixer", NULL, "DAC Left2"},
-+ {"Digital R2 Playback Mixer", NULL, "DAC Right2"},
-+ {"Digital Voice Playback Mixer", NULL, "DAC Voice"},
-+
-+ {"Analog L1 Playback Mixer", NULL, "Digital L1 Playback Mixer"},
-+ {"Analog R1 Playback Mixer", NULL, "Digital R1 Playback Mixer"},
-+ {"Analog L2 Playback Mixer", NULL, "Digital L2 Playback Mixer"},
-+ {"Analog R2 Playback Mixer", NULL, "Digital R2 Playback Mixer"},
-+ {"Analog Voice Playback Mixer", NULL, "Digital Voice Playback Mixer"},
-
- /* Internal playback routings */
- /* Earpiece */
-- {"Earpiece Mux", "DACL1", "ARXL1_APGA"},
-- {"Earpiece Mux", "DACL2", "ARXL2_APGA"},
-- {"Earpiece Mux", "DACR1", "ARXR1_APGA"},
-+ {"Earpiece Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"Earpiece Mixer", "AudioL1", "Analog L1 Playback Mixer"},
-+ {"Earpiece Mixer", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"Earpiece Mixer", "AudioR1", "Analog R1 Playback Mixer"},
-+ {"Earpiece PGA", NULL, "Earpiece Mixer"},
- /* PreDrivL */
-- {"PredriveL Mux", "DACL1", "ARXL1_APGA"},
-- {"PredriveL Mux", "DACL2", "ARXL2_APGA"},
-- {"PredriveL Mux", "DACR2", "ARXR2_APGA"},
-+ {"PredriveL Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"PredriveL Mixer", "AudioL1", "Analog L1 Playback Mixer"},
-+ {"PredriveL Mixer", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"PredriveL Mixer", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"PredriveL PGA", NULL, "PredriveL Mixer"},
- /* PreDrivR */
-- {"PredriveR Mux", "DACR1", "ARXR1_APGA"},
-- {"PredriveR Mux", "DACR2", "ARXR2_APGA"},
-- {"PredriveR Mux", "DACL2", "ARXL2_APGA"},
-+ {"PredriveR Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"PredriveR Mixer", "AudioR1", "Analog R1 Playback Mixer"},
-+ {"PredriveR Mixer", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"PredriveR Mixer", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"PredriveR PGA", NULL, "PredriveR Mixer"},
- /* HeadsetL */
-- {"HeadsetL Mux", "DACL1", "ARXL1_APGA"},
-- {"HeadsetL Mux", "DACL2", "ARXL2_APGA"},
-+ {"HeadsetL Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"HeadsetL Mixer", "AudioL1", "Analog L1 Playback Mixer"},
-+ {"HeadsetL Mixer", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"HeadsetL PGA", NULL, "HeadsetL Mixer"},
- /* HeadsetR */
-- {"HeadsetR Mux", "DACR1", "ARXR1_APGA"},
-- {"HeadsetR Mux", "DACR2", "ARXR2_APGA"},
-+ {"HeadsetR Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"HeadsetR Mixer", "AudioR1", "Analog R1 Playback Mixer"},
-+ {"HeadsetR Mixer", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"HeadsetR PGA", NULL, "HeadsetR Mixer"},
- /* CarkitL */
-- {"CarkitL Mux", "DACL1", "ARXL1_APGA"},
-- {"CarkitL Mux", "DACL2", "ARXL2_APGA"},
-+ {"CarkitL Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"CarkitL Mixer", "AudioL1", "Analog L1 Playback Mixer"},
-+ {"CarkitL Mixer", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"CarkitL PGA", NULL, "CarkitL Mixer"},
- /* CarkitR */
-- {"CarkitR Mux", "DACR1", "ARXR1_APGA"},
-- {"CarkitR Mux", "DACR2", "ARXR2_APGA"},
-+ {"CarkitR Mixer", "Voice", "Analog Voice Playback Mixer"},
-+ {"CarkitR Mixer", "AudioR1", "Analog R1 Playback Mixer"},
-+ {"CarkitR Mixer", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"CarkitR PGA", NULL, "CarkitR Mixer"},
- /* HandsfreeL */
-- {"HandsfreeL Mux", "DACL1", "ARXL1_APGA"},
-- {"HandsfreeL Mux", "DACL2", "ARXL2_APGA"},
-- {"HandsfreeL Mux", "DACR2", "ARXR2_APGA"},
-+ {"HandsfreeL Mux", "Voice", "Analog Voice Playback Mixer"},
-+ {"HandsfreeL Mux", "AudioL1", "Analog L1 Playback Mixer"},
-+ {"HandsfreeL Mux", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"HandsfreeL Mux", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"HandsfreeL", "Switch", "HandsfreeL Mux"},
-+ {"HandsfreeL PGA", NULL, "HandsfreeL"},
- /* HandsfreeR */
-- {"HandsfreeR Mux", "DACR1", "ARXR1_APGA"},
-- {"HandsfreeR Mux", "DACR2", "ARXR2_APGA"},
-- {"HandsfreeR Mux", "DACL2", "ARXL2_APGA"},
-+ {"HandsfreeR Mux", "Voice", "Analog Voice Playback Mixer"},
-+ {"HandsfreeR Mux", "AudioR1", "Analog R1 Playback Mixer"},
-+ {"HandsfreeR Mux", "AudioR2", "Analog R2 Playback Mixer"},
-+ {"HandsfreeR Mux", "AudioL2", "Analog L2 Playback Mixer"},
-+ {"HandsfreeR", "Switch", "HandsfreeR Mux"},
-+ {"HandsfreeR PGA", NULL, "HandsfreeR"},
-+ /* Vibra */
-+ {"Vibra Mux", "AudioL1", "DAC Left1"},
-+ {"Vibra Mux", "AudioR1", "DAC Right1"},
-+ {"Vibra Mux", "AudioL2", "DAC Left2"},
-+ {"Vibra Mux", "AudioR2", "DAC Right2"},
-
- /* outputs */
-- {"OUTL", NULL, "ARXL2_APGA"},
-- {"OUTR", NULL, "ARXR2_APGA"},
-- {"EARPIECE", NULL, "Earpiece Mux"},
-- {"PREDRIVEL", NULL, "PredriveL Mux"},
-- {"PREDRIVER", NULL, "PredriveR Mux"},
-- {"HSOL", NULL, "HeadsetL Mux"},
-- {"HSOR", NULL, "HeadsetR Mux"},
-- {"CARKITL", NULL, "CarkitL Mux"},
-- {"CARKITR", NULL, "CarkitR Mux"},
-- {"HFL", NULL, "HandsfreeL Mux"},
-- {"HFR", NULL, "HandsfreeR Mux"},
-+ {"OUTL", NULL, "Analog L2 Playback Mixer"},
-+ {"OUTR", NULL, "Analog R2 Playback Mixer"},
-+ {"EARPIECE", NULL, "Earpiece PGA"},
-+ {"PREDRIVEL", NULL, "PredriveL PGA"},
-+ {"PREDRIVER", NULL, "PredriveR PGA"},
-+ {"HSOL", NULL, "HeadsetL PGA"},
-+ {"HSOR", NULL, "HeadsetR PGA"},
-+ {"CARKITL", NULL, "CarkitL PGA"},
-+ {"CARKITR", NULL, "CarkitR PGA"},
-+ {"HFL", NULL, "HandsfreeL PGA"},
-+ {"HFR", NULL, "HandsfreeR PGA"},
-+ {"Vibra Route", "Audio", "Vibra Mux"},
-+ {"VIBRA", NULL, "Vibra Route"},
-
- /* Capture path */
-- {"Analog Left Capture Route", "Main mic", "MAINMIC"},
-- {"Analog Left Capture Route", "Headset mic", "HSMIC"},
-- {"Analog Left Capture Route", "AUXL", "AUXL"},
-- {"Analog Left Capture Route", "Carkit mic", "CARKITMIC"},
-+ {"Analog Left", "Main Mic Capture Switch", "MAINMIC"},
-+ {"Analog Left", "Headset Mic Capture Switch", "HSMIC"},
-+ {"Analog Left", "AUXL Capture Switch", "AUXL"},
-+ {"Analog Left", "Carkit Mic Capture Switch", "CARKITMIC"},
-
-- {"Analog Right Capture Route", "Sub mic", "SUBMIC"},
-- {"Analog Right Capture Route", "AUXR", "AUXR"},
-+ {"Analog Right", "Sub Mic Capture Switch", "SUBMIC"},
-+ {"Analog Right", "AUXR Capture Switch", "AUXR"},
-
-- {"ADC Physical Left", NULL, "Analog Left Capture Route"},
-- {"ADC Physical Right", NULL, "Analog Right Capture Route"},
-+ {"ADC Physical Left", NULL, "Analog Left"},
-+ {"ADC Physical Right", NULL, "Analog Right"},
-
- {"Digimic0 Enable", NULL, "DIGIMIC0"},
- {"Digimic1 Enable", NULL, "DIGIMIC1"},
-@@ -1164,22 +1483,26 @@
- {"ADC Virtual Right2", NULL, "TX2 Capture Route"},
-
- /* Analog bypass routes */
-- {"Right1 Analog Loopback", "Switch", "Analog Right Capture Route"},
-- {"Left1 Analog Loopback", "Switch", "Analog Left Capture Route"},
-- {"Right2 Analog Loopback", "Switch", "Analog Right Capture Route"},
-- {"Left2 Analog Loopback", "Switch", "Analog Left Capture Route"},
-+ {"Right1 Analog Loopback", "Switch", "Analog Right"},
-+ {"Left1 Analog Loopback", "Switch", "Analog Left"},
-+ {"Right2 Analog Loopback", "Switch", "Analog Right"},
-+ {"Left2 Analog Loopback", "Switch", "Analog Left"},
-+ {"Voice Analog Loopback", "Switch", "Analog Left"},
-
- {"Analog R1 Playback Mixer", NULL, "Right1 Analog Loopback"},
- {"Analog L1 Playback Mixer", NULL, "Left1 Analog Loopback"},
- {"Analog R2 Playback Mixer", NULL, "Right2 Analog Loopback"},
- {"Analog L2 Playback Mixer", NULL, "Left2 Analog Loopback"},
-+ {"Analog Voice Playback Mixer", NULL, "Voice Analog Loopback"},
-
- /* Digital bypass routes */
- {"Right Digital Loopback", "Volume", "TX1 Capture Route"},
- {"Left Digital Loopback", "Volume", "TX1 Capture Route"},
-+ {"Voice Digital Loopback", "Volume", "TX2 Capture Route"},
-
-- {"Analog R2 Playback Mixer", NULL, "Right Digital Loopback"},
-- {"Analog L2 Playback Mixer", NULL, "Left Digital Loopback"},
-+ {"Digital R2 Playback Mixer", NULL, "Right Digital Loopback"},
-+ {"Digital L2 Playback Mixer", NULL, "Left Digital Loopback"},
-+ {"Digital Voice Playback Mixer", NULL, "Voice Digital Loopback"},
-
- };
-
-@@ -1226,6 +1549,58 @@
- return 0;
- }
-
-+static void twl4030_constraints(struct twl4030_priv *twl4030,
-+ struct snd_pcm_substream *mst_substream)
-+{
-+ struct snd_pcm_substream *slv_substream;
-+
-+ /* Pick the stream, which need to be constrained */
-+ if (mst_substream == twl4030->master_substream)
-+ slv_substream = twl4030->slave_substream;
-+ else if (mst_substream == twl4030->slave_substream)
-+ slv_substream = twl4030->master_substream;
-+ else /* This should not happen.. */
-+ return;
-+
-+ /* Set the constraints according to the already configured stream */
-+ snd_pcm_hw_constraint_minmax(slv_substream->runtime,
-+ SNDRV_PCM_HW_PARAM_RATE,
-+ twl4030->rate,
-+ twl4030->rate);
-+
-+ snd_pcm_hw_constraint_minmax(slv_substream->runtime,
-+ SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-+ twl4030->sample_bits,
-+ twl4030->sample_bits);
-+
-+ snd_pcm_hw_constraint_minmax(slv_substream->runtime,
-+ SNDRV_PCM_HW_PARAM_CHANNELS,
-+ twl4030->channels,
-+ twl4030->channels);
-+}
-+
-+/* In case of 4 channel mode, the RX1 L/R for playback and the TX2 L/R for
-+ * capture has to be enabled/disabled. */
-+static void twl4030_tdm_enable(struct snd_soc_codec *codec, int direction,
-+ int enable)
-+{
-+ u8 reg, mask;
-+
-+ reg = twl4030_read_reg_cache(codec, TWL4030_REG_OPTION);
-+
-+ if (direction == SNDRV_PCM_STREAM_PLAYBACK)
-+ mask = TWL4030_ARXL1_VRX_EN | TWL4030_ARXR1_EN;
-+ else
-+ mask = TWL4030_ATXL2_VTXL_EN | TWL4030_ATXR2_VTXR_EN;
-+
-+ if (enable)
-+ reg |= mask;
-+ else
-+ reg &= ~mask;
-+
-+ twl4030_write(codec, TWL4030_REG_OPTION, reg);
-+}
-+
- static int twl4030_startup(struct snd_pcm_substream *substream,
- struct snd_soc_dai *dai)
- {
-@@ -1234,26 +1609,25 @@
- struct snd_soc_codec *codec = socdev->card->codec;
- struct twl4030_priv *twl4030 = codec->private_data;
-
-- /* If we already have a playback or capture going then constrain
-- * this substream to match it.
-- */
- if (twl4030->master_substream) {
-- struct snd_pcm_runtime *master_runtime;
-- master_runtime = twl4030->master_substream->runtime;
--
-- snd_pcm_hw_constraint_minmax(substream->runtime,
-- SNDRV_PCM_HW_PARAM_RATE,
-- master_runtime->rate,
-- master_runtime->rate);
--
-- snd_pcm_hw_constraint_minmax(substream->runtime,
-- SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-- master_runtime->sample_bits,
-- master_runtime->sample_bits);
--
- twl4030->slave_substream = substream;
-- } else
-+ /* The DAI has one configuration for playback and capture, so
-+ * if the DAI has been already configured then constrain this
-+ * substream to match it. */
-+ if (twl4030->configured)
-+ twl4030_constraints(twl4030, twl4030->master_substream);
-+ } else {
-+ if (!(twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE) &
-+ TWL4030_OPTION_1)) {
-+ /* In option2 4 channel is not supported, set the
-+ * constraint for the first stream for channels, the
-+ * second stream will 'inherit' this cosntraint */
-+ snd_pcm_hw_constraint_minmax(substream->runtime,
-+ SNDRV_PCM_HW_PARAM_CHANNELS,
-+ 2, 2);
-+ }
- twl4030->master_substream = substream;
-+ }
-
- return 0;
- }
-@@ -1270,6 +1644,17 @@
- twl4030->master_substream = twl4030->slave_substream;
-
- twl4030->slave_substream = NULL;
-+
-+ /* If all streams are closed, or the remaining stream has not yet
-+ * been configured than set the DAI as not configured. */
-+ if (!twl4030->master_substream)
-+ twl4030->configured = 0;
-+ else if (!twl4030->master_substream->runtime->channels)
-+ twl4030->configured = 0;
-+
-+ /* If the closing substream had 4 channel, do the necessary cleanup */
-+ if (substream->runtime->channels == 4)
-+ twl4030_tdm_enable(codec, substream->stream, 0);
- }
-
- static int twl4030_hw_params(struct snd_pcm_substream *substream,
-@@ -1282,8 +1667,22 @@
- struct twl4030_priv *twl4030 = codec->private_data;
- u8 mode, old_mode, format, old_format;
-
-- if (substream == twl4030->slave_substream)
-- /* Ignoring hw_params for slave substream */
-+ /* If the substream has 4 channel, do the necessary setup */
-+ if (params_channels(params) == 4) {
-+ format = twl4030_read_reg_cache(codec, TWL4030_REG_AUDIO_IF);
-+ mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE);
-+
-+ /* Safety check: are we in the correct operating mode and
-+ * the interface is in TDM mode? */
-+ if ((mode & TWL4030_OPTION_1) &&
-+ ((format & TWL4030_AIF_FORMAT) == TWL4030_AIF_FORMAT_TDM))
-+ twl4030_tdm_enable(codec, substream->stream, 1);
-+ else
-+ return -EINVAL;
-+ }
-+
-+ if (twl4030->configured)
-+ /* Ignoring hw_params for already configured DAI */
- return 0;
-
- /* bit rate */
-@@ -1363,6 +1762,21 @@
- /* set CODECPDZ afterwards */
- twl4030_codec_enable(codec, 1);
- }
-+
-+ /* Store the important parameters for the DAI configuration and set
-+ * the DAI as configured */
-+ twl4030->configured = 1;
-+ twl4030->rate = params_rate(params);
-+ twl4030->sample_bits = hw_param_interval(params,
-+ SNDRV_PCM_HW_PARAM_SAMPLE_BITS)->min;
-+ twl4030->channels = params_channels(params);
-+
-+ /* If both playback and capture streams are open, and one of them
-+ * is setting the hw parameters right now (since we are here), set
-+ * constraints to the other stream to match the current one. */
-+ if (twl4030->slave_substream)
-+ twl4030_constraints(twl4030, substream);
-+
- return 0;
- }
-
-@@ -1370,17 +1784,21 @@
- int clk_id, unsigned int freq, int dir)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
- u8 infreq;
-
- switch (freq) {
- case 19200000:
- infreq = TWL4030_APLL_INFREQ_19200KHZ;
-+ twl4030->sysclk = 19200;
- break;
- case 26000000:
- infreq = TWL4030_APLL_INFREQ_26000KHZ;
-+ twl4030->sysclk = 26000;
- break;
- case 38400000:
- infreq = TWL4030_APLL_INFREQ_38400KHZ;
-+ twl4030->sysclk = 38400;
- break;
- default:
- printk(KERN_ERR "TWL4030 set sysclk: unknown rate %d\n",
-@@ -1424,6 +1842,9 @@
- case SND_SOC_DAIFMT_I2S:
- format |= TWL4030_AIF_FORMAT_CODEC;
- break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ format |= TWL4030_AIF_FORMAT_TDM;
-+ break;
- default:
- return -EINVAL;
- }
-@@ -1443,6 +1864,206 @@
- return 0;
- }
-
-+static int twl4030_set_tristate(struct snd_soc_dai *dai, int tristate)
-+{
-+ struct snd_soc_codec *codec = dai->codec;
-+ u8 reg = twl4030_read_reg_cache(codec, TWL4030_REG_AUDIO_IF);
-+
-+ if (tristate)
-+ reg |= TWL4030_AIF_TRI_EN;
-+ else
-+ reg &= ~TWL4030_AIF_TRI_EN;
-+
-+ return twl4030_write(codec, TWL4030_REG_AUDIO_IF, reg);
-+}
-+
-+/* In case of voice mode, the RX1 L(VRX) for downlink and the TX2 L/R
-+ * (VTXL, VTXR) for uplink has to be enabled/disabled. */
-+static void twl4030_voice_enable(struct snd_soc_codec *codec, int direction,
-+ int enable)
-+{
-+ u8 reg, mask;
-+
-+ reg = twl4030_read_reg_cache(codec, TWL4030_REG_OPTION);
-+
-+ if (direction == SNDRV_PCM_STREAM_PLAYBACK)
-+ mask = TWL4030_ARXL1_VRX_EN;
-+ else
-+ mask = TWL4030_ATXL2_VTXL_EN | TWL4030_ATXR2_VTXR_EN;
-+
-+ if (enable)
-+ reg |= mask;
-+ else
-+ reg &= ~mask;
-+
-+ twl4030_write(codec, TWL4030_REG_OPTION, reg);
-+}
-+
-+static int twl4030_voice_startup(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+ u8 infreq;
-+ u8 mode;
-+
-+ /* If the system master clock is not 26MHz, the voice PCM interface is
-+ * not avilable.
-+ */
-+ infreq = twl4030_read_reg_cache(codec, TWL4030_REG_APLL_CTL)
-+ & TWL4030_APLL_INFREQ;
-+
-+ if (infreq != TWL4030_APLL_INFREQ_26000KHZ) {
-+ printk(KERN_ERR "TWL4030 voice startup: "
-+ "MCLK is not 26MHz, call set_sysclk() on init\n");
-+ return -EINVAL;
-+ }
-+
-+ /* If the codec mode is not option2, the voice PCM interface is not
-+ * avilable.
-+ */
-+ mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE)
-+ & TWL4030_OPT_MODE;
-+
-+ if (mode != TWL4030_OPTION_2) {
-+ printk(KERN_ERR "TWL4030 voice startup: "
-+ "the codec mode is not option2\n");
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void twl4030_voice_shutdown(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+
-+ /* Enable voice digital filters */
-+ twl4030_voice_enable(codec, substream->stream, 0);
-+}
-+
-+static int twl4030_voice_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+ u8 old_mode, mode;
-+
-+ /* Enable voice digital filters */
-+ twl4030_voice_enable(codec, substream->stream, 1);
-+
-+ /* bit rate */
-+ old_mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE)
-+ & ~(TWL4030_CODECPDZ);
-+ mode = old_mode;
-+
-+ switch (params_rate(params)) {
-+ case 8000:
-+ mode &= ~(TWL4030_SEL_16K);
-+ break;
-+ case 16000:
-+ mode |= TWL4030_SEL_16K;
-+ break;
-+ default:
-+ printk(KERN_ERR "TWL4030 voice hw params: unknown rate %d\n",
-+ params_rate(params));
-+ return -EINVAL;
-+ }
-+
-+ if (mode != old_mode) {
-+ /* change rate and set CODECPDZ */
-+ twl4030_codec_enable(codec, 0);
-+ twl4030_write(codec, TWL4030_REG_CODEC_MODE, mode);
-+ twl4030_codec_enable(codec, 1);
-+ }
-+
-+ return 0;
-+}
-+
-+static int twl4030_voice_set_dai_sysclk(struct snd_soc_dai *codec_dai,
-+ int clk_id, unsigned int freq, int dir)
-+{
-+ struct snd_soc_codec *codec = codec_dai->codec;
-+ u8 infreq;
-+
-+ switch (freq) {
-+ case 26000000:
-+ infreq = TWL4030_APLL_INFREQ_26000KHZ;
-+ break;
-+ default:
-+ printk(KERN_ERR "TWL4030 voice set sysclk: unknown rate %d\n",
-+ freq);
-+ return -EINVAL;
-+ }
-+
-+ infreq |= TWL4030_APLL_EN;
-+ twl4030_write(codec, TWL4030_REG_APLL_CTL, infreq);
-+
-+ return 0;
-+}
-+
-+static int twl4030_voice_set_dai_fmt(struct snd_soc_dai *codec_dai,
-+ unsigned int fmt)
-+{
-+ struct snd_soc_codec *codec = codec_dai->codec;
-+ u8 old_format, format;
-+
-+ /* get format */
-+ old_format = twl4030_read_reg_cache(codec, TWL4030_REG_VOICE_IF);
-+ format = old_format;
-+
-+ /* set master/slave audio interface */
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ format &= ~(TWL4030_VIF_SLAVE_EN);
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ format |= TWL4030_VIF_SLAVE_EN;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ /* clock inversion */
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_NF:
-+ format &= ~(TWL4030_VIF_FORMAT);
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ format |= TWL4030_VIF_FORMAT;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+ /* change format and set CODECPDZ */
-+ twl4030_codec_enable(codec, 0);
-+ twl4030_write(codec, TWL4030_REG_VOICE_IF, format);
-+ twl4030_codec_enable(codec, 1);
-+ }
-+
-+ return 0;
-+}
-+
-+static int twl4030_voice_set_tristate(struct snd_soc_dai *dai, int tristate)
-+{
-+ struct snd_soc_codec *codec = dai->codec;
-+ u8 reg = twl4030_read_reg_cache(codec, TWL4030_REG_VOICE_IF);
-+
-+ if (tristate)
-+ reg |= TWL4030_VIF_TRI_EN;
-+ else
-+ reg &= ~TWL4030_VIF_TRI_EN;
-+
-+ return twl4030_write(codec, TWL4030_REG_VOICE_IF, reg);
-+}
-+
- #define TWL4030_RATES (SNDRV_PCM_RATE_8000_48000)
- #define TWL4030_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE)
-
-@@ -1452,23 +2073,51 @@
- .hw_params = twl4030_hw_params,
- .set_sysclk = twl4030_set_dai_sysclk,
- .set_fmt = twl4030_set_dai_fmt,
-+ .set_tristate = twl4030_set_tristate,
-+};
-+
-+static struct snd_soc_dai_ops twl4030_dai_voice_ops = {
-+ .startup = twl4030_voice_startup,
-+ .shutdown = twl4030_voice_shutdown,
-+ .hw_params = twl4030_voice_hw_params,
-+ .set_sysclk = twl4030_voice_set_dai_sysclk,
-+ .set_fmt = twl4030_voice_set_dai_fmt,
-+ .set_tristate = twl4030_voice_set_tristate,
- };
-
--struct snd_soc_dai twl4030_dai = {
-+struct snd_soc_dai twl4030_dai[] = {
-+{
- .name = "twl4030",
- .playback = {
-- .stream_name = "Playback",
-+ .stream_name = "HiFi Playback",
- .channels_min = 2,
-- .channels_max = 2,
-+ .channels_max = 4,
- .rates = TWL4030_RATES | SNDRV_PCM_RATE_96000,
- .formats = TWL4030_FORMATS,},
- .capture = {
- .stream_name = "Capture",
- .channels_min = 2,
-- .channels_max = 2,
-+ .channels_max = 4,
- .rates = TWL4030_RATES,
- .formats = TWL4030_FORMATS,},
- .ops = &twl4030_dai_ops,
-+},
-+{
-+ .name = "twl4030 Voice",
-+ .playback = {
-+ .stream_name = "Voice Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .ops = &twl4030_dai_voice_ops,
-+},
- };
- EXPORT_SYMBOL_GPL(twl4030_dai);
-
-@@ -1500,6 +2149,8 @@
- static int twl4030_init(struct snd_soc_device *socdev)
- {
- struct snd_soc_codec *codec = socdev->card->codec;
-+ struct twl4030_setup_data *setup = socdev->codec_data;
-+ struct twl4030_priv *twl4030 = codec->private_data;
- int ret = 0;
-
- printk(KERN_INFO "TWL4030 Audio Codec init \n");
-@@ -1509,14 +2160,31 @@
- codec->read = twl4030_read_reg_cache;
- codec->write = twl4030_write;
- codec->set_bias_level = twl4030_set_bias_level;
-- codec->dai = &twl4030_dai;
-- codec->num_dai = 1;
-+ codec->dai = twl4030_dai;
-+ codec->num_dai = ARRAY_SIZE(twl4030_dai),
- codec->reg_cache_size = sizeof(twl4030_reg);
- codec->reg_cache = kmemdup(twl4030_reg, sizeof(twl4030_reg),
- GFP_KERNEL);
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-+ /* Configuration for headset ramp delay from setup data */
-+ if (setup) {
-+ unsigned char hs_pop;
-+
-+ if (setup->sysclk)
-+ twl4030->sysclk = setup->sysclk;
-+ else
-+ twl4030->sysclk = 26000;
-+
-+ hs_pop = twl4030_read_reg_cache(codec, TWL4030_REG_HS_POPN_SET);
-+ hs_pop &= ~TWL4030_RAMP_DELAY;
-+ hs_pop |= (setup->ramp_delay_value << 2);
-+ twl4030_write_reg_cache(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
-+ } else {
-+ twl4030->sysclk = 26000;
-+ }
-+
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
-@@ -1604,13 +2272,13 @@
-
- static int __init twl4030_modinit(void)
- {
-- return snd_soc_register_dai(&twl4030_dai);
-+ return snd_soc_register_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
- }
- module_init(twl4030_modinit);
-
- static void __exit twl4030_exit(void)
- {
-- snd_soc_unregister_dai(&twl4030_dai);
-+ snd_soc_unregister_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
- }
- module_exit(twl4030_exit);
-
-Index: linux-2.6.30/sound/soc/codecs/twl4030.h
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/twl4030.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/twl4030.h 2011-02-01 16:40:30.185047492 +0100
-@@ -92,8 +92,9 @@
- #define TWL4030_REG_VIBRA_PWM_SET 0x47
- #define TWL4030_REG_ANAMIC_GAIN 0x48
- #define TWL4030_REG_MISC_SET_2 0x49
-+#define TWL4030_REG_SW_SHADOW 0x4A
-
--#define TWL4030_CACHEREGNUM (TWL4030_REG_MISC_SET_2 + 1)
-+#define TWL4030_CACHEREGNUM (TWL4030_REG_SW_SHADOW + 1)
-
- /* Bitfield Definitions */
-
-@@ -110,9 +111,22 @@
- #define TWL4030_APLL_RATE_44100 0x90
- #define TWL4030_APLL_RATE_48000 0xA0
- #define TWL4030_APLL_RATE_96000 0xE0
--#define TWL4030_SEL_16K 0x04
-+#define TWL4030_SEL_16K 0x08
- #define TWL4030_CODECPDZ 0x02
- #define TWL4030_OPT_MODE 0x01
-+#define TWL4030_OPTION_1 (1 << 0)
-+#define TWL4030_OPTION_2 (0 << 0)
-+
-+/* TWL4030_OPTION (0x02) Fields */
-+
-+#define TWL4030_ATXL1_EN (1 << 0)
-+#define TWL4030_ATXR1_EN (1 << 1)
-+#define TWL4030_ATXL2_VTXL_EN (1 << 2)
-+#define TWL4030_ATXR2_VTXR_EN (1 << 3)
-+#define TWL4030_ARXL1_VRX_EN (1 << 4)
-+#define TWL4030_ARXR1_EN (1 << 5)
-+#define TWL4030_ARXL2_EN (1 << 6)
-+#define TWL4030_ARXR2_EN (1 << 7)
-
- /* TWL4030_REG_MICBIAS_CTL (0x04) Fields */
-
-@@ -171,6 +185,17 @@
- #define TWL4030_CLK256FS_EN 0x02
- #define TWL4030_AIF_EN 0x01
-
-+/* VOICE_IF (0x0F) Fields */
-+
-+#define TWL4030_VIF_SLAVE_EN 0x80
-+#define TWL4030_VIF_DIN_EN 0x40
-+#define TWL4030_VIF_DOUT_EN 0x20
-+#define TWL4030_VIF_SWAP 0x10
-+#define TWL4030_VIF_FORMAT 0x08
-+#define TWL4030_VIF_TRI_EN 0x04
-+#define TWL4030_VIF_SUB_EN 0x02
-+#define TWL4030_VIF_EN 0x01
-+
- /* EAR_CTL (0x21) */
- #define TWL4030_EAR_GAIN 0x30
-
-@@ -236,7 +261,21 @@
- #define TWL4030_SMOOTH_ANAVOL_EN 0x02
- #define TWL4030_DIGMIC_LR_SWAP_EN 0x01
-
--extern struct snd_soc_dai twl4030_dai;
-+/* TWL4030_REG_SW_SHADOW (0x4A) Fields */
-+#define TWL4030_HFL_EN 0x01
-+#define TWL4030_HFR_EN 0x02
-+
-+#define TWL4030_DAI_HIFI 0
-+#define TWL4030_DAI_VOICE 1
-+
-+extern struct snd_soc_dai twl4030_dai[2];
- extern struct snd_soc_codec_device soc_codec_dev_twl4030;
-
-+struct twl4030_setup_data {
-+ unsigned int ramp_delay_value;
-+ unsigned int sysclk;
-+ unsigned int hs_extmute:1;
-+ void (*set_hs_extmute)(int mute);
-+};
-+
- #endif /* End of __TWL4030_AUDIO_H__ */
-Index: linux-2.6.30/sound/soc/codecs/uda134x.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/uda134x.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/uda134x.c 2011-02-01 16:40:30.185047492 +0100
-@@ -101,7 +101,7 @@
- pr_debug("%s reg: %02X, value:%02X\n", __func__, reg, value);
-
- if (reg >= UDA134X_REGS_NUM) {
-- printk(KERN_ERR "%s unkown register: reg: %d",
-+ printk(KERN_ERR "%s unkown register: reg: %u",
- __func__, reg);
- return -EINVAL;
- }
-@@ -163,7 +163,7 @@
- else
- mute_reg &= ~(1<<2);
-
-- uda134x_write(codec, UDA134X_DATA010, mute_reg & ~(1<<2));
-+ uda134x_write(codec, UDA134X_DATA010, mute_reg);
-
- return 0;
- }
-@@ -296,7 +296,7 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- struct uda134x_priv *uda134x = codec->private_data;
-
-- pr_debug("%s clk_id: %d, freq: %d, dir: %d\n", __func__,
-+ pr_debug("%s clk_id: %d, freq: %u, dir: %d\n", __func__,
- clk_id, freq, dir);
-
- /* Anything between 256fs*8Khz and 512fs*48Khz should be acceptable
-Index: linux-2.6.30/sound/soc/codecs/uda1380.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/uda1380.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/uda1380.c 2011-02-01 16:40:30.185047492 +0100
-@@ -5,9 +5,7 @@
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
-- * Copyright (c) 2007 Philipp Zabel <philipp.zabel at gmail.com>
-- * Improved support for DAPM and audio routing/mixing capabilities,
-- * added TLV support.
-+ * Copyright (c) 2007-2009 Philipp Zabel <philipp.zabel at gmail.com>
- *
- * Modified by Richard Purdie <richard at openedhand.com> to fit into SoC
- * codec model.
-@@ -19,26 +17,32 @@
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/types.h>
--#include <linux/string.h>
- #include <linux/slab.h>
- #include <linux/errno.h>
--#include <linux/ioctl.h>
-+#include <linux/gpio.h>
- #include <linux/delay.h>
- #include <linux/i2c.h>
- #include <linux/workqueue.h>
- #include <sound/core.h>
- #include <sound/control.h>
- #include <sound/initval.h>
--#include <sound/info.h>
- #include <sound/soc.h>
- #include <sound/soc-dapm.h>
- #include <sound/tlv.h>
-+#include <sound/uda1380.h>
-
- #include "uda1380.h"
-
--static struct work_struct uda1380_work;
- static struct snd_soc_codec *uda1380_codec;
-
-+/* codec private data */
-+struct uda1380_priv {
-+ struct snd_soc_codec codec;
-+ u16 reg_cache[UDA1380_CACHEREGNUM];
-+ unsigned int dac_clk;
-+ struct work_struct work;
-+};
-+
- /*
- * uda1380 register cache
- */
-@@ -473,6 +477,7 @@
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
-+ struct uda1380_priv *uda1380 = codec->private_data;
- int mixer = uda1380_read_reg_cache(codec, UDA1380_MIXER);
-
- switch (cmd) {
-@@ -480,13 +485,13 @@
- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
- uda1380_write_reg_cache(codec, UDA1380_MIXER,
- mixer & ~R14_SILENCE);
-- schedule_work(&uda1380_work);
-+ schedule_work(&uda1380->work);
- break;
- case SNDRV_PCM_TRIGGER_STOP:
- case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
- uda1380_write_reg_cache(codec, UDA1380_MIXER,
- mixer | R14_SILENCE);
-- schedule_work(&uda1380_work);
-+ schedule_work(&uda1380->work);
- break;
- }
- return 0;
-@@ -670,44 +675,33 @@
- return 0;
- }
-
--/*
-- * initialise the UDA1380 driver
-- * register mixer and dsp interfaces with the kernel
-- */
--static int uda1380_init(struct snd_soc_device *socdev, int dac_clk)
-+static int uda1380_probe(struct platform_device *pdev)
- {
-- struct snd_soc_codec *codec = socdev->card->codec;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ struct uda1380_platform_data *pdata;
- int ret = 0;
-
-- codec->name = "UDA1380";
-- codec->owner = THIS_MODULE;
-- codec->read = uda1380_read_reg_cache;
-- codec->write = uda1380_write;
-- codec->set_bias_level = uda1380_set_bias_level;
-- codec->dai = uda1380_dai;
-- codec->num_dai = ARRAY_SIZE(uda1380_dai);
-- codec->reg_cache = kmemdup(uda1380_reg, sizeof(uda1380_reg),
-- GFP_KERNEL);
-- if (codec->reg_cache == NULL)
-- return -ENOMEM;
-- codec->reg_cache_size = ARRAY_SIZE(uda1380_reg);
-- codec->reg_cache_step = 1;
-- uda1380_reset(codec);
-+ if (uda1380_codec == NULL) {
-+ dev_err(&pdev->dev, "Codec device not registered\n");
-+ return -ENODEV;
-+ }
-
-- uda1380_codec = codec;
-- INIT_WORK(&uda1380_work, uda1380_flush_work);
-+ socdev->card->codec = uda1380_codec;
-+ codec = uda1380_codec;
-+ pdata = codec->dev->platform_data;
-
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
-- pr_err("uda1380: failed to create pcms\n");
-+ dev_err(codec->dev, "failed to create pcms: %d\n", ret);
- goto pcm_err;
- }
-
- /* power on device */
- uda1380_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
- /* set clock input */
-- switch (dac_clk) {
-+ switch (pdata->dac_clk) {
- case UDA1380_DAC_CLK_SYSCLK:
- uda1380_write(codec, UDA1380_CLK, 0);
- break;
-@@ -716,13 +710,12 @@
- break;
- }
-
-- /* uda1380 init */
- snd_soc_add_controls(codec, uda1380_snd_controls,
- ARRAY_SIZE(uda1380_snd_controls));
- uda1380_add_widgets(codec);
- ret = snd_soc_init_card(socdev);
- if (ret < 0) {
-- pr_err("uda1380: failed to register card\n");
-+ dev_err(codec->dev, "failed to register card: %d\n", ret);
- goto card_err;
- }
-
-@@ -732,165 +725,201 @@
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
- pcm_err:
-- kfree(codec->reg_cache);
- return ret;
- }
-
--static struct snd_soc_device *uda1380_socdev;
--
--#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
--
--static int uda1380_i2c_probe(struct i2c_client *i2c,
-- const struct i2c_device_id *id)
-+/* power down chip */
-+static int uda1380_remove(struct platform_device *pdev)
- {
-- struct snd_soc_device *socdev = uda1380_socdev;
-- struct uda1380_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct snd_soc_codec *codec = socdev->card->codec;
-- int ret;
--
-- i2c_set_clientdata(i2c, codec);
-- codec->control_data = i2c;
-
-- ret = uda1380_init(socdev, setup->dac_clk);
-- if (ret < 0)
-- pr_err("uda1380: failed to initialise UDA1380\n");
-+ if (codec->control_data)
-+ uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-- return ret;
--}
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-
--static int uda1380_i2c_remove(struct i2c_client *client)
--{
-- struct snd_soc_codec *codec = i2c_get_clientdata(client);
-- kfree(codec->reg_cache);
- return 0;
- }
-
--static const struct i2c_device_id uda1380_i2c_id[] = {
-- { "uda1380", 0 },
-- { }
--};
--MODULE_DEVICE_TABLE(i2c, uda1380_i2c_id);
--
--static struct i2c_driver uda1380_i2c_driver = {
-- .driver = {
-- .name = "UDA1380 I2C Codec",
-- .owner = THIS_MODULE,
-- },
-- .probe = uda1380_i2c_probe,
-- .remove = uda1380_i2c_remove,
-- .id_table = uda1380_i2c_id,
-+struct snd_soc_codec_device soc_codec_dev_uda1380 = {
-+ .probe = uda1380_probe,
-+ .remove = uda1380_remove,
-+ .suspend = uda1380_suspend,
-+ .resume = uda1380_resume,
- };
-+EXPORT_SYMBOL_GPL(soc_codec_dev_uda1380);
-
--static int uda1380_add_i2c_device(struct platform_device *pdev,
-- const struct uda1380_setup_data *setup)
-+static int uda1380_register(struct uda1380_priv *uda1380)
- {
-- struct i2c_board_info info;
-- struct i2c_adapter *adapter;
-- struct i2c_client *client;
-- int ret;
-+ int ret, i;
-+ struct snd_soc_codec *codec = &uda1380->codec;
-+ struct uda1380_platform_data *pdata = codec->dev->platform_data;
-
-- ret = i2c_add_driver(&uda1380_i2c_driver);
-- if (ret != 0) {
-- dev_err(&pdev->dev, "can't add i2c driver\n");
-- return ret;
-+ if (uda1380_codec) {
-+ dev_err(codec->dev, "Another UDA1380 is registered\n");
-+ return -EINVAL;
-+ }
-+
-+ if (!pdata || !pdata->gpio_power || !pdata->gpio_reset)
-+ return -EINVAL;
-+
-+ ret = gpio_request(pdata->gpio_power, "uda1380 power");
-+ if (ret)
-+ goto err_out;
-+ ret = gpio_request(pdata->gpio_reset, "uda1380 reset");
-+ if (ret)
-+ goto err_gpio;
-+
-+ gpio_direction_output(pdata->gpio_power, 1);
-+
-+ /* we may need to have the clock running here - pH5 */
-+ gpio_direction_output(pdata->gpio_reset, 1);
-+ udelay(5);
-+ gpio_set_value(pdata->gpio_reset, 0);
-+
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ codec->private_data = uda1380;
-+ codec->name = "UDA1380";
-+ codec->owner = THIS_MODULE;
-+ codec->read = uda1380_read_reg_cache;
-+ codec->write = uda1380_write;
-+ codec->bias_level = SND_SOC_BIAS_OFF;
-+ codec->set_bias_level = uda1380_set_bias_level;
-+ codec->dai = uda1380_dai;
-+ codec->num_dai = ARRAY_SIZE(uda1380_dai);
-+ codec->reg_cache_size = ARRAY_SIZE(uda1380_reg);
-+ codec->reg_cache = &uda1380->reg_cache;
-+ codec->reg_cache_step = 1;
-+
-+ memcpy(codec->reg_cache, uda1380_reg, sizeof(uda1380_reg));
-+
-+ ret = uda1380_reset(codec);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to issue reset\n");
-+ goto err_reset;
- }
-
-- memset(&info, 0, sizeof(struct i2c_board_info));
-- info.addr = setup->i2c_address;
-- strlcpy(info.type, "uda1380", I2C_NAME_SIZE);
-+ INIT_WORK(&uda1380->work, uda1380_flush_work);
-
-- adapter = i2c_get_adapter(setup->i2c_bus);
-- if (!adapter) {
-- dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-- setup->i2c_bus);
-- goto err_driver;
-+ for (i = 0; i < ARRAY_SIZE(uda1380_dai); i++)
-+ uda1380_dai[i].dev = codec->dev;
-+
-+ uda1380_codec = codec;
-+
-+ ret = snd_soc_register_codec(codec);
-+ if (ret != 0) {
-+ dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-+ goto err_reset;
- }
-
-- client = i2c_new_device(adapter, &info);
-- i2c_put_adapter(adapter);
-- if (!client) {
-- dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-- (unsigned int)info.addr);
-- goto err_driver;
-+ ret = snd_soc_register_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-+ if (ret != 0) {
-+ dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-+ goto err_dai;
- }
-
- return 0;
-
--err_driver:
-- i2c_del_driver(&uda1380_i2c_driver);
-- return -ENODEV;
-+err_dai:
-+ snd_soc_unregister_codec(codec);
-+err_reset:
-+ gpio_set_value(pdata->gpio_power, 0);
-+ gpio_free(pdata->gpio_reset);
-+err_gpio:
-+ gpio_free(pdata->gpio_power);
-+err_out:
-+ return ret;
- }
--#endif
-
--static int uda1380_probe(struct platform_device *pdev)
-+static void uda1380_unregister(struct uda1380_priv *uda1380)
- {
-- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-- struct uda1380_setup_data *setup;
-+ struct snd_soc_codec *codec = &uda1380->codec;
-+ struct uda1380_platform_data *pdata = codec->dev->platform_data;
-+
-+ snd_soc_unregister_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-+ snd_soc_unregister_codec(&uda1380->codec);
-+
-+ gpio_set_value(pdata->gpio_power, 0);
-+ gpio_free(pdata->gpio_reset);
-+ gpio_free(pdata->gpio_power);
-+
-+ kfree(uda1380);
-+ uda1380_codec = NULL;
-+}
-+
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-+static __devinit int uda1380_i2c_probe(struct i2c_client *i2c,
-+ const struct i2c_device_id *id)
-+{
-+ struct uda1380_priv *uda1380;
- struct snd_soc_codec *codec;
- int ret;
-
-- setup = socdev->codec_data;
-- codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-- if (codec == NULL)
-+ uda1380 = kzalloc(sizeof(struct uda1380_priv), GFP_KERNEL);
-+ if (uda1380 == NULL)
- return -ENOMEM;
-
-- socdev->card->codec = codec;
-- mutex_init(&codec->mutex);
-- INIT_LIST_HEAD(&codec->dapm_widgets);
-- INIT_LIST_HEAD(&codec->dapm_paths);
-+ codec = &uda1380->codec;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-
-- uda1380_socdev = socdev;
-- ret = -ENODEV;
-+ i2c_set_clientdata(i2c, uda1380);
-+ codec->control_data = i2c;
-
--#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t)i2c_master_send;
-- ret = uda1380_add_i2c_device(pdev, setup);
-- }
--#endif
-+ codec->dev = &i2c->dev;
-
-+ ret = uda1380_register(uda1380);
- if (ret != 0)
-- kfree(codec);
-+ kfree(uda1380);
-+
- return ret;
- }
-
--/* power down chip */
--static int uda1380_remove(struct platform_device *pdev)
-+static int __devexit uda1380_i2c_remove(struct i2c_client *i2c)
- {
-- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-- struct snd_soc_codec *codec = socdev->card->codec;
--
-- if (codec->control_data)
-- uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
--
-- snd_soc_free_pcms(socdev);
-- snd_soc_dapm_free(socdev);
--#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-- i2c_unregister_device(codec->control_data);
-- i2c_del_driver(&uda1380_i2c_driver);
--#endif
-- kfree(codec);
--
-+ struct uda1380_priv *uda1380 = i2c_get_clientdata(i2c);
-+ uda1380_unregister(uda1380);
- return 0;
- }
-
--struct snd_soc_codec_device soc_codec_dev_uda1380 = {
-- .probe = uda1380_probe,
-- .remove = uda1380_remove,
-- .suspend = uda1380_suspend,
-- .resume = uda1380_resume,
-+static const struct i2c_device_id uda1380_i2c_id[] = {
-+ { "uda1380", 0 },
-+ { }
- };
--EXPORT_SYMBOL_GPL(soc_codec_dev_uda1380);
-+MODULE_DEVICE_TABLE(i2c, uda1380_i2c_id);
-+
-+static struct i2c_driver uda1380_i2c_driver = {
-+ .driver = {
-+ .name = "UDA1380 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = uda1380_i2c_probe,
-+ .remove = __devexit_p(uda1380_i2c_remove),
-+ .id_table = uda1380_i2c_id,
-+};
-+#endif
-
- static int __init uda1380_modinit(void)
- {
-- return snd_soc_register_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-+ int ret;
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-+ ret = i2c_add_driver(&uda1380_i2c_driver);
-+ if (ret != 0)
-+ pr_err("Failed to register UDA1380 I2C driver: %d\n", ret);
-+#endif
-+ return 0;
- }
- module_init(uda1380_modinit);
-
- static void __exit uda1380_exit(void)
- {
-- snd_soc_unregister_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-+ i2c_del_driver(&uda1380_i2c_driver);
-+#endif
- }
- module_exit(uda1380_exit);
-
-Index: linux-2.6.30/sound/soc/codecs/uda1380.h
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/uda1380.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/uda1380.h 2011-02-01 16:40:30.185047492 +0100
-@@ -72,14 +72,6 @@
- #define R22_SKIP_DCFIL 0x0002
- #define R23_AGC_EN 0x0001
-
--struct uda1380_setup_data {
-- int i2c_bus;
-- unsigned short i2c_address;
-- int dac_clk;
--#define UDA1380_DAC_CLK_SYSCLK 0
--#define UDA1380_DAC_CLK_WSPLL 1
--};
--
- #define UDA1380_DAI_DUPLEX 0 /* playback and capture on single DAI */
- #define UDA1380_DAI_PLAYBACK 1 /* playback DAI */
- #define UDA1380_DAI_CAPTURE 2 /* capture DAI */
-Index: linux-2.6.30/sound/soc/codecs/wm8350.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8350.c 2011-02-01 16:39:20.000000000 +0100
-+++ linux-2.6.30/sound/soc/codecs/wm8350.c 2011-02-01 16:40:30.185047492 +0100
-@@ -63,6 +63,8 @@
- struct wm8350_jack_data hpl;
- struct wm8350_jack_data hpr;
- struct regulator_bulk_data supplies[ARRAY_SIZE(supply_names)];
-+ int fll_freq_out;
-+ int fll_freq_in;
- };
-
- static unsigned int wm8350_codec_cache_read(struct snd_soc_codec *codec,
-@@ -406,7 +408,6 @@
- static const char *wm8350_pol[] = { "Normal", "Inv R", "Inv L", "Inv L & R" };
- static const char *wm8350_dacmutem[] = { "Normal", "Soft" };
- static const char *wm8350_dacmutes[] = { "Fast", "Slow" };
--static const char *wm8350_dacfilter[] = { "Normal", "Sloping" };
- static const char *wm8350_adcfilter[] = { "None", "High Pass" };
- static const char *wm8350_adchp[] = { "44.1kHz", "8kHz", "16kHz", "32kHz" };
- static const char *wm8350_lr[] = { "Left", "Right" };
-@@ -416,7 +417,6 @@
- SOC_ENUM_SINGLE(WM8350_DAC_CONTROL, 0, 4, wm8350_pol),
- SOC_ENUM_SINGLE(WM8350_DAC_MUTE_VOLUME, 14, 2, wm8350_dacmutem),
- SOC_ENUM_SINGLE(WM8350_DAC_MUTE_VOLUME, 13, 2, wm8350_dacmutes),
-- SOC_ENUM_SINGLE(WM8350_DAC_MUTE_VOLUME, 12, 2, wm8350_dacfilter),
- SOC_ENUM_SINGLE(WM8350_ADC_CONTROL, 15, 2, wm8350_adcfilter),
- SOC_ENUM_SINGLE(WM8350_ADC_CONTROL, 8, 4, wm8350_adchp),
- SOC_ENUM_SINGLE(WM8350_ADC_CONTROL, 0, 4, wm8350_pol),
-@@ -444,10 +444,9 @@
- 0, 255, 0, dac_pcm_tlv),
- SOC_ENUM("Playback PCM Mute Function", wm8350_enum[2]),
- SOC_ENUM("Playback PCM Mute Speed", wm8350_enum[3]),
-- SOC_ENUM("Playback PCM Filter", wm8350_enum[4]),
-- SOC_ENUM("Capture PCM Filter", wm8350_enum[5]),
-- SOC_ENUM("Capture PCM HP Filter", wm8350_enum[6]),
-- SOC_ENUM("Capture ADC Inversion", wm8350_enum[7]),
-+ SOC_ENUM("Capture PCM Filter", wm8350_enum[4]),
-+ SOC_ENUM("Capture PCM HP Filter", wm8350_enum[5]),
-+ SOC_ENUM("Capture ADC Inversion", wm8350_enum[6]),
- SOC_WM8350_DOUBLE_R_TLV("Capture PCM Volume",
- WM8350_ADC_DIGITAL_VOLUME_L,
- WM8350_ADC_DIGITAL_VOLUME_R,
-@@ -580,7 +579,7 @@
- SOC_DAPM_SINGLE_TLV("L3 Capture Volume",
- WM8350_INPUT_MIXER_VOLUME_L, 9, 7, 0, out_mix_tlv),
- SOC_DAPM_SINGLE("PGA Capture Switch",
-- WM8350_LEFT_INPUT_VOLUME, 14, 1, 0),
-+ WM8350_LEFT_INPUT_VOLUME, 14, 1, 1),
- };
-
- /* Right Input Mixer */
-@@ -590,7 +589,7 @@
- SOC_DAPM_SINGLE_TLV("L3 Capture Volume",
- WM8350_INPUT_MIXER_VOLUME_R, 13, 7, 0, out_mix_tlv),
- SOC_DAPM_SINGLE("PGA Capture Switch",
-- WM8350_RIGHT_INPUT_VOLUME, 14, 1, 0),
-+ WM8350_RIGHT_INPUT_VOLUME, 14, 1, 1),
- };
-
- /* Left Mic Mixer */
-@@ -993,6 +992,7 @@
- struct snd_soc_dai *codec_dai)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
-+ struct wm8350 *wm8350 = codec->control_data;
- u16 iface = wm8350_codec_read(codec, WM8350_AI_FORMATING) &
- ~WM8350_AIF_WL_MASK;
-
-@@ -1012,6 +1012,19 @@
- }
-
- wm8350_codec_write(codec, WM8350_AI_FORMATING, iface);
-+
-+ /* The sloping stopband filter is recommended for use with
-+ * lower sample rates to improve performance.
-+ */
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ if (params_rate(params) < 24000)
-+ wm8350_set_bits(wm8350, WM8350_DAC_MUTE_VOLUME,
-+ WM8350_DAC_SB_FILT);
-+ else
-+ wm8350_clear_bits(wm8350, WM8350_DAC_MUTE_VOLUME,
-+ WM8350_DAC_SB_FILT);
-+ }
-+
- return 0;
- }
-
-@@ -1088,15 +1101,19 @@
- }
-
- static int wm8350_set_fll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in,
-+ int pll_id, int source, unsigned int freq_in,
- unsigned int freq_out)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
- struct wm8350 *wm8350 = codec->control_data;
-+ struct wm8350_data *priv = codec->private_data;
- struct _fll_div fll_div;
- int ret = 0;
- u16 fll_1, fll_4;
-
-+ if (freq_in == priv->fll_freq_in && freq_out == priv->fll_freq_out)
-+ return 0;
-+
- /* power down FLL - we need to do this for reconfiguration */
- wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_4,
- WM8350_FLL_ENA | WM8350_FLL_OSC_ENA);
-@@ -1108,7 +1125,7 @@
- if (ret < 0)
- return ret;
- dev_dbg(wm8350->dev,
-- "FLL in %d FLL out %d N 0x%x K 0x%x div %d ratio %d",
-+ "FLL in %u FLL out %u N 0x%x K 0x%x div %d ratio %d",
- freq_in, freq_out, fll_div.n, fll_div.k, fll_div.div,
- fll_div.ratio);
-
-@@ -1131,6 +1148,9 @@
- wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_OSC_ENA);
- wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_ENA);
-
-+ priv->fll_freq_out = freq_out;
-+ priv->fll_freq_in = freq_in;
-+
- return 0;
- }
-
-@@ -1660,6 +1680,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8350_codec_suspend(struct platform_device *pdev, pm_message_t m)
-+{
-+ return snd_soc_suspend_device(&pdev->dev);
-+}
-+
-+static int wm8350_codec_resume(struct platform_device *pdev)
-+{
-+ return snd_soc_resume_device(&pdev->dev);
-+}
-+#else
-+#define wm8350_codec_suspend NULL
-+#define wm8350_codec_resume NULL
-+#endif
-+
- static struct platform_driver wm8350_codec_driver = {
- .driver = {
- .name = "wm8350-codec",
-@@ -1667,6 +1702,8 @@
- },
- .probe = wm8350_codec_probe,
- .remove = __devexit_p(wm8350_codec_remove),
-+ .suspend = wm8350_codec_suspend,
-+ .resume = wm8350_codec_resume,
- };
-
- static __init int wm8350_init(void)
-Index: linux-2.6.30/sound/soc/codecs/wm8350.h
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8350.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8350.h 2011-02-01 16:40:30.185047492 +0100
-@@ -13,6 +13,7 @@
- #define _WM8350_H
-
- #include <sound/soc.h>
-+#include <linux/mfd/wm8350/audio.h>
-
- extern struct snd_soc_dai wm8350_dai;
- extern struct snd_soc_codec_device soc_codec_dev_wm8350;
-Index: linux-2.6.30/sound/soc/codecs/wm8400.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8400.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8400.c 2011-02-01 16:40:30.185047492 +0100
-@@ -954,7 +954,7 @@
- factors->outdiv *= 2;
- if (factors->outdiv > 32) {
- dev_err(wm8400->wm8400->dev,
-- "Unsupported FLL output frequency %dHz\n",
-+ "Unsupported FLL output frequency %uHz\n",
- Fout);
- return -EINVAL;
- }
-@@ -1003,7 +1003,7 @@
- factors->k = K / 10;
-
- dev_dbg(wm8400->wm8400->dev,
-- "FLL: Fref=%d Fout=%d N=%x K=%x, FRATIO=%x OUTDIV=%x\n",
-+ "FLL: Fref=%u Fout=%u N=%x K=%x, FRATIO=%x OUTDIV=%x\n",
- Fref, Fout,
- factors->n, factors->k, factors->fratio, factors->outdiv);
-
-@@ -1011,7 +1011,8 @@
- }
-
- static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-- unsigned int freq_in, unsigned int freq_out)
-+ int source, unsigned int freq_in,
-+ unsigned int freq_out)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
- struct wm8400_priv *wm8400 = codec->private_data;
-@@ -1022,10 +1023,15 @@
- if (freq_in == wm8400->fll_in && freq_out == wm8400->fll_out)
- return 0;
-
-- if (freq_out != 0) {
-+ if (freq_out) {
- ret = fll_factors(wm8400, &factors, freq_in, freq_out);
- if (ret != 0)
- return ret;
-+ } else {
-+ /* Bodge GCC 4.4.0 uninitialised variable warning - it
-+ * doesn't seem capable of working out that we exit if
-+ * freq_out is 0 before any of the uses. */
-+ memset(&factors, 0, sizeof(factors));
- }
-
- wm8400->fll_out = freq_out;
-@@ -1040,7 +1046,7 @@
- reg &= ~WM8400_FLL_OSC_ENA;
- wm8400_write(codec, WM8400_FLL_CONTROL_1, reg);
-
-- if (freq_out == 0)
-+ if (!freq_out)
- return 0;
-
- reg &= ~(WM8400_FLL_REF_FREQ | WM8400_FLL_FRATIO_MASK);
-@@ -1473,8 +1479,8 @@
-
- codec = &priv->codec;
- codec->private_data = priv;
-- codec->control_data = dev->dev.driver_data;
-- priv->wm8400 = dev->dev.driver_data;
-+ codec->control_data = dev_get_drvdata(&dev->dev);
-+ priv->wm8400 = dev_get_drvdata(&dev->dev);
-
- ret = regulator_bulk_get(priv->wm8400->dev,
- ARRAY_SIZE(power), &power[0]);
-@@ -1553,6 +1559,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8400_pdev_suspend(struct platform_device *pdev, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&pdev->dev);
-+}
-+
-+static int wm8400_pdev_resume(struct platform_device *pdev)
-+{
-+ return snd_soc_resume_device(&pdev->dev);
-+}
-+#else
-+#define wm8400_pdev_suspend NULL
-+#define wm8400_pdev_resume NULL
-+#endif
-+
- static struct platform_driver wm8400_codec_driver = {
- .driver = {
- .name = "wm8400-codec",
-@@ -1560,6 +1581,8 @@
- },
- .probe = wm8400_codec_probe,
- .remove = __exit_p(wm8400_codec_remove),
-+ .suspend = wm8400_pdev_suspend,
-+ .resume = wm8400_pdev_resume,
- };
-
- static int __init wm8400_codec_init(void)
-Index: linux-2.6.30/sound/soc/codecs/wm8510.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8510.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8510.c 2011-02-01 16:40:30.185047492 +0100
-@@ -58,55 +58,7 @@
- #define WM8510_POWER1_BIASEN 0x08
- #define WM8510_POWER1_BUFIOEN 0x10
-
--/*
-- * read wm8510 register cache
-- */
--static inline unsigned int wm8510_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg == WM8510_RESET)
-- return 0;
-- if (reg >= WM8510_CACHEREGNUM)
-- return -1;
-- return cache[reg];
--}
--
--/*
-- * write wm8510 register cache
-- */
--static inline void wm8510_write_reg_cache(struct snd_soc_codec *codec,
-- u16 reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg >= WM8510_CACHEREGNUM)
-- return;
-- cache[reg] = value;
--}
--
--/*
-- * write to the WM8510 register space
-- */
--static int wm8510_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- /* data is
-- * D15..D9 WM8510 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8510_write_reg_cache(codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--#define wm8510_reset(c) wm8510_write(c, WM8510_RESET, 0)
-+#define wm8510_reset(c) snd_soc_write(c, WM8510_RESET, 0)
-
- static const char *wm8510_companding[] = { "Off", "NC", "u-law", "A-law" };
- static const char *wm8510_deemp[] = { "None", "32kHz", "44.1kHz", "48kHz" };
-@@ -298,7 +250,7 @@
-
- if ((Ndiv < 6) || (Ndiv > 12))
- printk(KERN_WARNING
-- "WM8510 N value %d outwith recommended range!d\n",
-+ "WM8510 N value %u outwith recommended range!d\n",
- Ndiv);
-
- pll_div.n = Ndiv;
-@@ -319,35 +271,35 @@
- pll_div.k = K;
- }
-
--static int wm8510_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm8510_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
- u16 reg;
-
- if (freq_in == 0 || freq_out == 0) {
- /* Clock CODEC directly from MCLK */
-- reg = wm8510_read_reg_cache(codec, WM8510_CLOCK);
-- wm8510_write(codec, WM8510_CLOCK, reg & 0x0ff);
-+ reg = snd_soc_read(codec, WM8510_CLOCK);
-+ snd_soc_write(codec, WM8510_CLOCK, reg & 0x0ff);
-
- /* Turn off PLL */
-- reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
-- wm8510_write(codec, WM8510_POWER1, reg & 0x1df);
-+ reg = snd_soc_read(codec, WM8510_POWER1);
-+ snd_soc_write(codec, WM8510_POWER1, reg & 0x1df);
- return 0;
- }
-
- pll_factors(freq_out*4, freq_in);
-
-- wm8510_write(codec, WM8510_PLLN, (pll_div.pre_div << 4) | pll_div.n);
-- wm8510_write(codec, WM8510_PLLK1, pll_div.k >> 18);
-- wm8510_write(codec, WM8510_PLLK2, (pll_div.k >> 9) & 0x1ff);
-- wm8510_write(codec, WM8510_PLLK3, pll_div.k & 0x1ff);
-- reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
-- wm8510_write(codec, WM8510_POWER1, reg | 0x020);
-+ snd_soc_write(codec, WM8510_PLLN, (pll_div.pre_div << 4) | pll_div.n);
-+ snd_soc_write(codec, WM8510_PLLK1, pll_div.k >> 18);
-+ snd_soc_write(codec, WM8510_PLLK2, (pll_div.k >> 9) & 0x1ff);
-+ snd_soc_write(codec, WM8510_PLLK3, pll_div.k & 0x1ff);
-+ reg = snd_soc_read(codec, WM8510_POWER1);
-+ snd_soc_write(codec, WM8510_POWER1, reg | 0x020);
-
- /* Run CODEC from PLL instead of MCLK */
-- reg = wm8510_read_reg_cache(codec, WM8510_CLOCK);
-- wm8510_write(codec, WM8510_CLOCK, reg | 0x100);
-+ reg = snd_soc_read(codec, WM8510_CLOCK);
-+ snd_soc_write(codec, WM8510_CLOCK, reg | 0x100);
-
- return 0;
- }
-@@ -363,24 +315,24 @@
-
- switch (div_id) {
- case WM8510_OPCLKDIV:
-- reg = wm8510_read_reg_cache(codec, WM8510_GPIO) & 0x1cf;
-- wm8510_write(codec, WM8510_GPIO, reg | div);
-+ reg = snd_soc_read(codec, WM8510_GPIO) & 0x1cf;
-+ snd_soc_write(codec, WM8510_GPIO, reg | div);
- break;
- case WM8510_MCLKDIV:
-- reg = wm8510_read_reg_cache(codec, WM8510_CLOCK) & 0x11f;
-- wm8510_write(codec, WM8510_CLOCK, reg | div);
-+ reg = snd_soc_read(codec, WM8510_CLOCK) & 0x11f;
-+ snd_soc_write(codec, WM8510_CLOCK, reg | div);
- break;
- case WM8510_ADCCLK:
-- reg = wm8510_read_reg_cache(codec, WM8510_ADC) & 0x1f7;
-- wm8510_write(codec, WM8510_ADC, reg | div);
-+ reg = snd_soc_read(codec, WM8510_ADC) & 0x1f7;
-+ snd_soc_write(codec, WM8510_ADC, reg | div);
- break;
- case WM8510_DACCLK:
-- reg = wm8510_read_reg_cache(codec, WM8510_DAC) & 0x1f7;
-- wm8510_write(codec, WM8510_DAC, reg | div);
-+ reg = snd_soc_read(codec, WM8510_DAC) & 0x1f7;
-+ snd_soc_write(codec, WM8510_DAC, reg | div);
- break;
- case WM8510_BCLKDIV:
-- reg = wm8510_read_reg_cache(codec, WM8510_CLOCK) & 0x1e3;
-- wm8510_write(codec, WM8510_CLOCK, reg | div);
-+ reg = snd_soc_read(codec, WM8510_CLOCK) & 0x1e3;
-+ snd_soc_write(codec, WM8510_CLOCK, reg | div);
- break;
- default:
- return -EINVAL;
-@@ -394,7 +346,7 @@
- {
- struct snd_soc_codec *codec = codec_dai->codec;
- u16 iface = 0;
-- u16 clk = wm8510_read_reg_cache(codec, WM8510_CLOCK) & 0x1fe;
-+ u16 clk = snd_soc_read(codec, WM8510_CLOCK) & 0x1fe;
-
- /* set master/slave audio interface */
- switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-@@ -441,8 +393,8 @@
- return -EINVAL;
- }
-
-- wm8510_write(codec, WM8510_IFACE, iface);
-- wm8510_write(codec, WM8510_CLOCK, clk);
-+ snd_soc_write(codec, WM8510_IFACE, iface);
-+ snd_soc_write(codec, WM8510_CLOCK, clk);
- return 0;
- }
-
-@@ -453,8 +405,8 @@
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
-- u16 iface = wm8510_read_reg_cache(codec, WM8510_IFACE) & 0x19f;
-- u16 adn = wm8510_read_reg_cache(codec, WM8510_ADD) & 0x1f1;
-+ u16 iface = snd_soc_read(codec, WM8510_IFACE) & 0x19f;
-+ u16 adn = snd_soc_read(codec, WM8510_ADD) & 0x1f1;
-
- /* bit size */
- switch (params_format(params)) {
-@@ -493,20 +445,20 @@
- break;
- }
-
-- wm8510_write(codec, WM8510_IFACE, iface);
-- wm8510_write(codec, WM8510_ADD, adn);
-+ snd_soc_write(codec, WM8510_IFACE, iface);
-+ snd_soc_write(codec, WM8510_ADD, adn);
- return 0;
- }
-
- static int wm8510_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-- u16 mute_reg = wm8510_read_reg_cache(codec, WM8510_DAC) & 0xffbf;
-+ u16 mute_reg = snd_soc_read(codec, WM8510_DAC) & 0xffbf;
-
- if (mute)
-- wm8510_write(codec, WM8510_DAC, mute_reg | 0x40);
-+ snd_soc_write(codec, WM8510_DAC, mute_reg | 0x40);
- else
-- wm8510_write(codec, WM8510_DAC, mute_reg);
-+ snd_soc_write(codec, WM8510_DAC, mute_reg);
- return 0;
- }
-
-@@ -514,13 +466,13 @@
- static int wm8510_set_bias_level(struct snd_soc_codec *codec,
- enum snd_soc_bias_level level)
- {
-- u16 power1 = wm8510_read_reg_cache(codec, WM8510_POWER1) & ~0x3;
-+ u16 power1 = snd_soc_read(codec, WM8510_POWER1) & ~0x3;
-
- switch (level) {
- case SND_SOC_BIAS_ON:
- case SND_SOC_BIAS_PREPARE:
- power1 |= 0x1; /* VMID 50k */
-- wm8510_write(codec, WM8510_POWER1, power1);
-+ snd_soc_write(codec, WM8510_POWER1, power1);
- break;
-
- case SND_SOC_BIAS_STANDBY:
-@@ -528,18 +480,18 @@
-
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
- /* Initial cap charge at VMID 5k */
-- wm8510_write(codec, WM8510_POWER1, power1 | 0x3);
-+ snd_soc_write(codec, WM8510_POWER1, power1 | 0x3);
- mdelay(100);
- }
-
- power1 |= 0x2; /* VMID 500k */
-- wm8510_write(codec, WM8510_POWER1, power1);
-+ snd_soc_write(codec, WM8510_POWER1, power1);
- break;
-
- case SND_SOC_BIAS_OFF:
-- wm8510_write(codec, WM8510_POWER1, 0);
-- wm8510_write(codec, WM8510_POWER2, 0);
-- wm8510_write(codec, WM8510_POWER3, 0);
-+ snd_soc_write(codec, WM8510_POWER1, 0);
-+ snd_soc_write(codec, WM8510_POWER2, 0);
-+ snd_soc_write(codec, WM8510_POWER3, 0);
- break;
- }
-
-@@ -577,6 +529,7 @@
- .rates = WM8510_RATES,
- .formats = WM8510_FORMATS,},
- .ops = &wm8510_dai_ops,
-+ .symmetric_rates = 1,
- };
- EXPORT_SYMBOL_GPL(wm8510_dai);
-
-@@ -612,15 +565,14 @@
- * initialise the WM8510 driver
- * register the mixer and dsp interfaces with the kernel
- */
--static int wm8510_init(struct snd_soc_device *socdev)
-+static int wm8510_init(struct snd_soc_device *socdev,
-+ enum snd_soc_control_type control)
- {
- struct snd_soc_codec *codec = socdev->card->codec;
- int ret = 0;
-
- codec->name = "WM8510";
- codec->owner = THIS_MODULE;
-- codec->read = wm8510_read_reg_cache;
-- codec->write = wm8510_write;
- codec->set_bias_level = wm8510_set_bias_level;
- codec->dai = &wm8510_dai;
- codec->num_dai = 1;
-@@ -630,13 +582,20 @@
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8510: failed to set cache I/O: %d\n",
-+ ret);
-+ goto err;
-+ }
-+
- wm8510_reset(codec);
-
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
- printk(KERN_ERR "wm8510: failed to create pcms\n");
-- goto pcm_err;
-+ goto err;
- }
-
- /* power on device */
-@@ -655,7 +614,7 @@
- card_err:
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
--pcm_err:
-+err:
- kfree(codec->reg_cache);
- return ret;
- }
-@@ -678,7 +637,7 @@
- i2c_set_clientdata(i2c, codec);
- codec->control_data = i2c;
-
-- ret = wm8510_init(socdev);
-+ ret = wm8510_init(socdev, SND_SOC_I2C);
- if (ret < 0)
- pr_err("failed to initialise WM8510\n");
-
-@@ -758,7 +717,7 @@
-
- codec->control_data = spi;
-
-- ret = wm8510_init(socdev);
-+ ret = wm8510_init(socdev, SND_SOC_SPI);
- if (ret < 0)
- dev_err(&spi->dev, "failed to initialise WM8510\n");
-
-@@ -779,30 +738,6 @@
- .probe = wm8510_spi_probe,
- .remove = __devexit_p(wm8510_spi_remove),
- };
--
--static int wm8510_spi_write(struct spi_device *spi, const char *data, int len)
--{
-- struct spi_transfer t;
-- struct spi_message m;
-- u8 msg[2];
--
-- if (len <= 0)
-- return 0;
--
-- msg[0] = data[0];
-- msg[1] = data[1];
--
-- spi_message_init(&m);
-- memset(&t, 0, (sizeof t));
--
-- t.tx_buf = &msg[0];
-- t.len = len;
--
-- spi_message_add_tail(&t, &m);
-- spi_sync(spi, &m);
--
-- return len;
--}
- #endif /* CONFIG_SPI_MASTER */
-
- static int wm8510_probe(struct platform_device *pdev)
-@@ -827,13 +762,11 @@
- wm8510_socdev = socdev;
- #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t)i2c_master_send;
- ret = wm8510_add_i2c_device(pdev, setup);
- }
- #endif
- #if defined(CONFIG_SPI_MASTER)
- if (setup->spi) {
-- codec->hw_write = (hw_write_t)wm8510_spi_write;
- ret = spi_register_driver(&wm8510_spi_driver);
- if (ret != 0)
- printk(KERN_ERR "can't add spi driver");
-Index: linux-2.6.30/sound/soc/codecs/wm8580.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8580.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8580.c 2011-02-01 16:40:30.185047492 +0100
-@@ -24,6 +24,8 @@
- #include <linux/pm.h>
- #include <linux/i2c.h>
- #include <linux/platform_device.h>
-+#include <linux/regulator/consumer.h>
-+
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/pcm_params.h>
-@@ -187,82 +189,22 @@
- unsigned int out;
- };
-
-+#define WM8580_NUM_SUPPLIES 3
-+static const char *wm8580_supply_names[WM8580_NUM_SUPPLIES] = {
-+ "AVDD",
-+ "DVDD",
-+ "PVDD",
-+};
-+
- /* codec private data */
- struct wm8580_priv {
- struct snd_soc_codec codec;
-+ struct regulator_bulk_data supplies[WM8580_NUM_SUPPLIES];
- u16 reg_cache[WM8580_MAX_REGISTER + 1];
- struct pll_state a;
- struct pll_state b;
- };
-
--
--/*
-- * read wm8580 register cache
-- */
--static inline unsigned int wm8580_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- BUG_ON(reg >= ARRAY_SIZE(wm8580_reg));
-- return cache[reg];
--}
--
--/*
-- * write wm8580 register cache
-- */
--static inline void wm8580_write_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
--
-- cache[reg] = value;
--}
--
--/*
-- * write to the WM8580 register space
-- */
--static int wm8580_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- BUG_ON(reg >= ARRAY_SIZE(wm8580_reg));
--
-- /* Registers are 9 bits wide */
-- value &= 0x1ff;
--
-- switch (reg) {
-- case WM8580_RESET:
-- /* Uncached */
-- break;
-- default:
-- if (value == wm8580_read_reg_cache(codec, reg))
-- return 0;
-- }
--
-- /* data is
-- * D15..D9 WM8580 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8580_write_reg_cache(codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--static inline unsigned int wm8580_read(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- switch (reg) {
-- default:
-- return wm8580_read_reg_cache(codec, reg);
-- }
--}
--
- static const DECLARE_TLV_DB_SCALE(dac_tlv, -12750, 50, 1);
-
- static int wm8580_out_vu(struct snd_kcontrol *kcontrol,
-@@ -271,25 +213,22 @@
- struct soc_mixer_control *mc =
- (struct soc_mixer_control *)kcontrol->private_value;
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ u16 *reg_cache = codec->reg_cache;
- unsigned int reg = mc->reg;
- unsigned int reg2 = mc->rreg;
- int ret;
-- u16 val;
-
- /* Clear the register cache so we write without VU set */
-- wm8580_write_reg_cache(codec, reg, 0);
-- wm8580_write_reg_cache(codec, reg2, 0);
-+ reg_cache[reg] = 0;
-+ reg_cache[reg2] = 0;
-
- ret = snd_soc_put_volsw_2r(kcontrol, ucontrol);
- if (ret < 0)
- return ret;
-
- /* Now write again with the volume update bit set */
-- val = wm8580_read_reg_cache(codec, reg);
-- wm8580_write(codec, reg, val | 0x0100);
--
-- val = wm8580_read_reg_cache(codec, reg2);
-- wm8580_write(codec, reg2, val | 0x0100);
-+ snd_soc_update_bits(codec, reg, 0x100, 0x100);
-+ snd_soc_update_bits(codec, reg2, 0x100, 0x100);
-
- return 0;
- }
-@@ -415,7 +354,7 @@
- unsigned int K, Ndiv, Nmod;
- int i;
-
-- pr_debug("wm8580: PLL %dHz->%dHz\n", source, target);
-+ pr_debug("wm8580: PLL %uHz->%uHz\n", source, target);
-
- /* Scale the output frequency up; the PLL should run in the
- * region of 90-100MHz.
-@@ -447,7 +386,7 @@
-
- if ((Ndiv < 5) || (Ndiv > 13)) {
- printk(KERN_ERR
-- "WM8580 N=%d outside supported range\n", Ndiv);
-+ "WM8580 N=%u outside supported range\n", Ndiv);
- return -EINVAL;
- }
-
-@@ -468,8 +407,8 @@
- return 0;
- }
-
--static int wm8580_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm8580_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- int offset;
- struct snd_soc_codec *codec = codec_dai->codec;
-@@ -512,27 +451,27 @@
- /* Always disable the PLL - it is not safe to leave it running
- * while reprogramming it.
- */
-- reg = wm8580_read(codec, WM8580_PWRDN2);
-- wm8580_write(codec, WM8580_PWRDN2, reg | pwr_mask);
-+ reg = snd_soc_read(codec, WM8580_PWRDN2);
-+ snd_soc_write(codec, WM8580_PWRDN2, reg | pwr_mask);
-
- if (!freq_in || !freq_out)
- return 0;
-
-- wm8580_write(codec, WM8580_PLLA1 + offset, pll_div.k & 0x1ff);
-- wm8580_write(codec, WM8580_PLLA2 + offset, (pll_div.k >> 9) & 0xff);
-- wm8580_write(codec, WM8580_PLLA3 + offset,
-+ snd_soc_write(codec, WM8580_PLLA1 + offset, pll_div.k & 0x1ff);
-+ snd_soc_write(codec, WM8580_PLLA2 + offset, (pll_div.k >> 9) & 0x1ff);
-+ snd_soc_write(codec, WM8580_PLLA3 + offset,
- (pll_div.k >> 18 & 0xf) | (pll_div.n << 4));
-
-- reg = wm8580_read(codec, WM8580_PLLA4 + offset);
-- reg &= ~0x3f;
-+ reg = snd_soc_read(codec, WM8580_PLLA4 + offset);
-+ reg &= ~0x1b;
- reg |= pll_div.prescale | pll_div.postscale << 1 |
- pll_div.freqmode << 3;
-
-- wm8580_write(codec, WM8580_PLLA4 + offset, reg);
-+ snd_soc_write(codec, WM8580_PLLA4 + offset, reg);
-
- /* All done, turn it on */
-- reg = wm8580_read(codec, WM8580_PWRDN2);
-- wm8580_write(codec, WM8580_PWRDN2, reg & ~pwr_mask);
-+ reg = snd_soc_read(codec, WM8580_PWRDN2);
-+ snd_soc_write(codec, WM8580_PWRDN2, reg & ~pwr_mask);
-
- return 0;
- }
-@@ -547,7 +486,7 @@
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
-- u16 paifb = wm8580_read(codec, WM8580_PAIF3 + dai->id);
-+ u16 paifb = snd_soc_read(codec, WM8580_PAIF3 + dai->id);
-
- paifb &= ~WM8580_AIF_LENGTH_MASK;
- /* bit size */
-@@ -567,7 +506,7 @@
- return -EINVAL;
- }
-
-- wm8580_write(codec, WM8580_PAIF3 + dai->id, paifb);
-+ snd_soc_write(codec, WM8580_PAIF3 + dai->id, paifb);
- return 0;
- }
-
-@@ -579,8 +518,8 @@
- unsigned int aifb;
- int can_invert_lrclk;
-
-- aifa = wm8580_read(codec, WM8580_PAIF1 + codec_dai->id);
-- aifb = wm8580_read(codec, WM8580_PAIF3 + codec_dai->id);
-+ aifa = snd_soc_read(codec, WM8580_PAIF1 + codec_dai->id);
-+ aifb = snd_soc_read(codec, WM8580_PAIF3 + codec_dai->id);
-
- aifb &= ~(WM8580_AIF_FMT_MASK | WM8580_AIF_LRP | WM8580_AIF_BCP);
-
-@@ -646,8 +585,8 @@
- return -EINVAL;
- }
-
-- wm8580_write(codec, WM8580_PAIF1 + codec_dai->id, aifa);
-- wm8580_write(codec, WM8580_PAIF3 + codec_dai->id, aifb);
-+ snd_soc_write(codec, WM8580_PAIF1 + codec_dai->id, aifa);
-+ snd_soc_write(codec, WM8580_PAIF3 + codec_dai->id, aifb);
-
- return 0;
- }
-@@ -660,7 +599,7 @@
-
- switch (div_id) {
- case WM8580_MCLK:
-- reg = wm8580_read(codec, WM8580_PLLB4);
-+ reg = snd_soc_read(codec, WM8580_PLLB4);
- reg &= ~WM8580_PLLB4_MCLKOUTSRC_MASK;
-
- switch (div) {
-@@ -682,11 +621,11 @@
- default:
- return -EINVAL;
- }
-- wm8580_write(codec, WM8580_PLLB4, reg);
-+ snd_soc_write(codec, WM8580_PLLB4, reg);
- break;
-
- case WM8580_DAC_CLKSEL:
-- reg = wm8580_read(codec, WM8580_CLKSEL);
-+ reg = snd_soc_read(codec, WM8580_CLKSEL);
- reg &= ~WM8580_CLKSEL_DAC_CLKSEL_MASK;
-
- switch (div) {
-@@ -704,11 +643,11 @@
- default:
- return -EINVAL;
- }
-- wm8580_write(codec, WM8580_CLKSEL, reg);
-+ snd_soc_write(codec, WM8580_CLKSEL, reg);
- break;
-
- case WM8580_CLKOUTSRC:
-- reg = wm8580_read(codec, WM8580_PLLB4);
-+ reg = snd_soc_read(codec, WM8580_PLLB4);
- reg &= ~WM8580_PLLB4_CLKOUTSRC_MASK;
-
- switch (div) {
-@@ -730,7 +669,7 @@
- default:
- return -EINVAL;
- }
-- wm8580_write(codec, WM8580_PLLB4, reg);
-+ snd_soc_write(codec, WM8580_PLLB4, reg);
- break;
-
- default:
-@@ -745,14 +684,14 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- unsigned int reg;
-
-- reg = wm8580_read(codec, WM8580_DAC_CONTROL5);
-+ reg = snd_soc_read(codec, WM8580_DAC_CONTROL5);
-
- if (mute)
- reg |= WM8580_DAC_CONTROL5_MUTEALL;
- else
- reg &= ~WM8580_DAC_CONTROL5_MUTEALL;
-
-- wm8580_write(codec, WM8580_DAC_CONTROL5, reg);
-+ snd_soc_write(codec, WM8580_DAC_CONTROL5, reg);
-
- return 0;
- }
-@@ -769,20 +708,20 @@
- case SND_SOC_BIAS_STANDBY:
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
- /* Power up and get individual control of the DACs */
-- reg = wm8580_read(codec, WM8580_PWRDN1);
-+ reg = snd_soc_read(codec, WM8580_PWRDN1);
- reg &= ~(WM8580_PWRDN1_PWDN | WM8580_PWRDN1_ALLDACPD);
-- wm8580_write(codec, WM8580_PWRDN1, reg);
-+ snd_soc_write(codec, WM8580_PWRDN1, reg);
-
- /* Make VMID high impedence */
-- reg = wm8580_read(codec, WM8580_ADC_CONTROL1);
-+ reg = snd_soc_read(codec, WM8580_ADC_CONTROL1);
- reg &= ~0x100;
-- wm8580_write(codec, WM8580_ADC_CONTROL1, reg);
-+ snd_soc_write(codec, WM8580_ADC_CONTROL1, reg);
- }
- break;
-
- case SND_SOC_BIAS_OFF:
-- reg = wm8580_read(codec, WM8580_PWRDN1);
-- wm8580_write(codec, WM8580_PWRDN1, reg | WM8580_PWRDN1_PWDN);
-+ reg = snd_soc_read(codec, WM8580_PWRDN1);
-+ snd_soc_write(codec, WM8580_PWRDN1, reg | WM8580_PWRDN1_PWDN);
- break;
- }
- codec->bias_level = level;
-@@ -893,7 +832,8 @@
- };
- EXPORT_SYMBOL_GPL(soc_codec_dev_wm8580);
-
--static int wm8580_register(struct wm8580_priv *wm8580)
-+static int wm8580_register(struct wm8580_priv *wm8580,
-+ enum snd_soc_control_type control)
- {
- int ret, i;
- struct snd_soc_codec *codec = &wm8580->codec;
-@@ -911,8 +851,6 @@
- codec->private_data = wm8580;
- codec->name = "WM8580";
- codec->owner = THIS_MODULE;
-- codec->read = wm8580_read_reg_cache;
-- codec->write = wm8580_write;
- codec->bias_level = SND_SOC_BIAS_OFF;
- codec->set_bias_level = wm8580_set_bias_level;
- codec->dai = wm8580_dai;
-@@ -922,11 +860,34 @@
-
- memcpy(codec->reg_cache, wm8580_reg, sizeof(wm8580_reg));
-
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8580->supplies); i++)
-+ wm8580->supplies[i].supply = wm8580_supply_names[i];
-+
-+ ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8580->supplies),
-+ wm8580->supplies);
-+ if (ret != 0) {
-+ dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-+ goto err;
-+ }
-+
-+ ret = regulator_bulk_enable(ARRAY_SIZE(wm8580->supplies),
-+ wm8580->supplies);
-+ if (ret != 0) {
-+ dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
-+ goto err_regulator_get;
-+ }
-+
- /* Get the codec into a known state */
-- ret = wm8580_write(codec, WM8580_RESET, 0);
-+ ret = snd_soc_write(codec, WM8580_RESET, 0);
- if (ret != 0) {
- dev_err(codec->dev, "Failed to reset codec: %d\n", ret);
-- goto err;
-+ goto err_regulator_enable;
- }
-
- for (i = 0; i < ARRAY_SIZE(wm8580_dai); i++)
-@@ -939,7 +900,7 @@
- ret = snd_soc_register_codec(codec);
- if (ret != 0) {
- dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-- goto err;
-+ goto err_regulator_enable;
- }
-
- ret = snd_soc_register_dais(wm8580_dai, ARRAY_SIZE(wm8580_dai));
-@@ -952,6 +913,10 @@
-
- err_codec:
- snd_soc_unregister_codec(codec);
-+err_regulator_enable:
-+ regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
-+err_regulator_get:
-+ regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
- err:
- kfree(wm8580);
- return ret;
-@@ -962,6 +927,8 @@
- wm8580_set_bias_level(&wm8580->codec, SND_SOC_BIAS_OFF);
- snd_soc_unregister_dais(wm8580_dai, ARRAY_SIZE(wm8580_dai));
- snd_soc_unregister_codec(&wm8580->codec);
-+ regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
-+ regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
- kfree(wm8580);
- wm8580_codec = NULL;
- }
-@@ -978,14 +945,13 @@
- return -ENOMEM;
-
- codec = &wm8580->codec;
-- codec->hw_write = (hw_write_t)i2c_master_send;
-
- i2c_set_clientdata(i2c, wm8580);
- codec->control_data = i2c;
-
- codec->dev = &i2c->dev;
-
-- return wm8580_register(wm8580);
-+ return wm8580_register(wm8580, SND_SOC_I2C);
- }
-
- static int wm8580_i2c_remove(struct i2c_client *client)
-@@ -995,6 +961,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8580_i2c_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&client->dev);
-+}
-+
-+static int wm8580_i2c_resume(struct i2c_client *client)
-+{
-+ return snd_soc_resume_device(&client->dev);
-+}
-+#else
-+#define wm8580_i2c_suspend NULL
-+#define wm8580_i2c_resume NULL
-+#endif
-+
- static const struct i2c_device_id wm8580_i2c_id[] = {
- { "wm8580", 0 },
- { }
-@@ -1008,6 +989,8 @@
- },
- .probe = wm8580_i2c_probe,
- .remove = wm8580_i2c_remove,
-+ .suspend = wm8580_i2c_suspend,
-+ .resume = wm8580_i2c_resume,
- .id_table = wm8580_i2c_id,
- };
- #endif
-Index: linux-2.6.30/sound/soc/codecs/wm8728.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8728.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8728.c 2011-02-01 16:40:30.185047492 +0100
-@@ -43,45 +43,6 @@
- 0x100,
- };
-
--static inline unsigned int wm8728_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- BUG_ON(reg >= ARRAY_SIZE(wm8728_reg_defaults));
-- return cache[reg];
--}
--
--static inline void wm8728_write_reg_cache(struct snd_soc_codec *codec,
-- u16 reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
-- BUG_ON(reg >= ARRAY_SIZE(wm8728_reg_defaults));
-- cache[reg] = value;
--}
--
--/*
-- * write to the WM8728 register space
-- */
--static int wm8728_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- /* data is
-- * D15..D9 WM8728 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8728_write_reg_cache(codec, reg, value);
--
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
- static const DECLARE_TLV_DB_SCALE(wm8728_tlv, -12750, 50, 1);
-
- static const struct snd_kcontrol_new wm8728_snd_controls[] = {
-@@ -121,12 +82,12 @@
- static int wm8728_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-- u16 mute_reg = wm8728_read_reg_cache(codec, WM8728_DACCTL);
-+ u16 mute_reg = snd_soc_read(codec, WM8728_DACCTL);
-
- if (mute)
-- wm8728_write(codec, WM8728_DACCTL, mute_reg | 1);
-+ snd_soc_write(codec, WM8728_DACCTL, mute_reg | 1);
- else
-- wm8728_write(codec, WM8728_DACCTL, mute_reg & ~1);
-+ snd_soc_write(codec, WM8728_DACCTL, mute_reg & ~1);
-
- return 0;
- }
-@@ -138,7 +99,7 @@
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
-- u16 dac = wm8728_read_reg_cache(codec, WM8728_DACCTL);
-+ u16 dac = snd_soc_read(codec, WM8728_DACCTL);
-
- dac &= ~0x18;
-
-@@ -155,7 +116,7 @@
- return -EINVAL;
- }
-
-- wm8728_write(codec, WM8728_DACCTL, dac);
-+ snd_soc_write(codec, WM8728_DACCTL, dac);
-
- return 0;
- }
-@@ -164,7 +125,7 @@
- unsigned int fmt)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
-- u16 iface = wm8728_read_reg_cache(codec, WM8728_IFCTL);
-+ u16 iface = snd_soc_read(codec, WM8728_IFCTL);
-
- /* Currently only I2S is supported by the driver, though the
- * hardware is more flexible.
-@@ -204,7 +165,7 @@
- return -EINVAL;
- }
-
-- wm8728_write(codec, WM8728_IFCTL, iface);
-+ snd_soc_write(codec, WM8728_IFCTL, iface);
- return 0;
- }
-
-@@ -220,19 +181,19 @@
- case SND_SOC_BIAS_STANDBY:
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
- /* Power everything up... */
-- reg = wm8728_read_reg_cache(codec, WM8728_DACCTL);
-- wm8728_write(codec, WM8728_DACCTL, reg & ~0x4);
-+ reg = snd_soc_read(codec, WM8728_DACCTL);
-+ snd_soc_write(codec, WM8728_DACCTL, reg & ~0x4);
-
- /* ..then sync in the register cache. */
- for (i = 0; i < ARRAY_SIZE(wm8728_reg_defaults); i++)
-- wm8728_write(codec, i,
-- wm8728_read_reg_cache(codec, i));
-+ snd_soc_write(codec, i,
-+ snd_soc_read(codec, i));
- }
- break;
-
- case SND_SOC_BIAS_OFF:
-- reg = wm8728_read_reg_cache(codec, WM8728_DACCTL);
-- wm8728_write(codec, WM8728_DACCTL, reg | 0x4);
-+ reg = snd_soc_read(codec, WM8728_DACCTL);
-+ snd_soc_write(codec, WM8728_DACCTL, reg | 0x4);
- break;
- }
- codec->bias_level = level;
-@@ -287,15 +248,14 @@
- * initialise the WM8728 driver
- * register the mixer and dsp interfaces with the kernel
- */
--static int wm8728_init(struct snd_soc_device *socdev)
-+static int wm8728_init(struct snd_soc_device *socdev,
-+ enum snd_soc_control_type control)
- {
- struct snd_soc_codec *codec = socdev->card->codec;
- int ret = 0;
-
- codec->name = "WM8728";
- codec->owner = THIS_MODULE;
-- codec->read = wm8728_read_reg_cache;
-- codec->write = wm8728_write;
- codec->set_bias_level = wm8728_set_bias_level;
- codec->dai = &wm8728_dai;
- codec->num_dai = 1;
-@@ -307,11 +267,18 @@
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8728: failed to configure cache I/O: %d\n",
-+ ret);
-+ goto err;
-+ }
-+
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
- printk(KERN_ERR "wm8728: failed to create pcms\n");
-- goto pcm_err;
-+ goto err;
- }
-
- /* power on device */
-@@ -331,7 +298,7 @@
- card_err:
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
--pcm_err:
-+err:
- kfree(codec->reg_cache);
- return ret;
- }
-@@ -357,7 +324,7 @@
- i2c_set_clientdata(i2c, codec);
- codec->control_data = i2c;
-
-- ret = wm8728_init(socdev);
-+ ret = wm8728_init(socdev, SND_SOC_I2C);
- if (ret < 0)
- pr_err("failed to initialise WM8728\n");
-
-@@ -437,7 +404,7 @@
-
- codec->control_data = spi;
-
-- ret = wm8728_init(socdev);
-+ ret = wm8728_init(socdev, SND_SOC_SPI);
- if (ret < 0)
- dev_err(&spi->dev, "failed to initialise WM8728\n");
-
-@@ -458,30 +425,6 @@
- .probe = wm8728_spi_probe,
- .remove = __devexit_p(wm8728_spi_remove),
- };
--
--static int wm8728_spi_write(struct spi_device *spi, const char *data, int len)
--{
-- struct spi_transfer t;
-- struct spi_message m;
-- u8 msg[2];
--
-- if (len <= 0)
-- return 0;
--
-- msg[0] = data[0];
-- msg[1] = data[1];
--
-- spi_message_init(&m);
-- memset(&t, 0, (sizeof t));
--
-- t.tx_buf = &msg[0];
-- t.len = len;
--
-- spi_message_add_tail(&t, &m);
-- spi_sync(spi, &m);
--
-- return len;
--}
- #endif /* CONFIG_SPI_MASTER */
-
- static int wm8728_probe(struct platform_device *pdev)
-@@ -506,13 +449,11 @@
-
- #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t)i2c_master_send;
- ret = wm8728_add_i2c_device(pdev, setup);
- }
- #endif
- #if defined(CONFIG_SPI_MASTER)
- if (setup->spi) {
-- codec->hw_write = (hw_write_t)wm8728_spi_write;
- ret = spi_register_driver(&wm8728_spi_driver);
- if (ret != 0)
- printk(KERN_ERR "can't add spi driver");
-Index: linux-2.6.30/sound/soc/codecs/wm8731.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8731.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8731.c 2011-02-01 16:40:30.185047492 +0100
-@@ -26,6 +26,7 @@
- #include <sound/soc.h>
- #include <sound/soc-dapm.h>
- #include <sound/initval.h>
-+#include <sound/tlv.h>
-
- #include "wm8731.h"
-
-@@ -39,9 +40,6 @@
- unsigned int sysclk;
- };
-
--#ifdef CONFIG_SPI_MASTER
--static int wm8731_spi_write(struct spi_device *spi, const char *data, int len);
--#endif
-
- /*
- * wm8731 register cache
-@@ -50,60 +48,12 @@
- * There is no point in caching the reset register
- */
- static const u16 wm8731_reg[WM8731_CACHEREGNUM] = {
-- 0x0097, 0x0097, 0x0079, 0x0079,
-- 0x000a, 0x0008, 0x009f, 0x000a,
-- 0x0000, 0x0000
-+ 0x0097, 0x0097, 0x0079, 0x0079,
-+ 0x000a, 0x0008, 0x009f, 0x000a,
-+ 0x0000, 0x0000
- };
-
--/*
-- * read wm8731 register cache
-- */
--static inline unsigned int wm8731_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg == WM8731_RESET)
-- return 0;
-- if (reg >= WM8731_CACHEREGNUM)
-- return -1;
-- return cache[reg];
--}
--
--/*
-- * write wm8731 register cache
-- */
--static inline void wm8731_write_reg_cache(struct snd_soc_codec *codec,
-- u16 reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg >= WM8731_CACHEREGNUM)
-- return;
-- cache[reg] = value;
--}
--
--/*
-- * write to the WM8731 register space
-- */
--static int wm8731_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- /* data is
-- * D15..D9 WM8731 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8731_write_reg_cache(codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--#define wm8731_reset(c) wm8731_write(c, WM8731_RESET, 0)
-+#define wm8731_reset(c) snd_soc_write(c, WM8731_RESET, 0)
-
- static const char *wm8731_input_select[] = {"Line In", "Mic"};
- static const char *wm8731_deemph[] = {"None", "32Khz", "44.1Khz", "48Khz"};
-@@ -113,20 +63,26 @@
- SOC_ENUM_SINGLE(WM8731_APDIGI, 1, 4, wm8731_deemph),
- };
-
-+static const DECLARE_TLV_DB_SCALE(in_tlv, -3450, 150, 0);
-+static const DECLARE_TLV_DB_SCALE(sidetone_tlv, -1500, 300, 0);
-+static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
-+
- static const struct snd_kcontrol_new wm8731_snd_controls[] = {
-
--SOC_DOUBLE_R("Master Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V,
-- 0, 127, 0),
-+SOC_DOUBLE_R_TLV("Master Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V,
-+ 0, 127, 0, out_tlv),
- SOC_DOUBLE_R("Master Playback ZC Switch", WM8731_LOUT1V, WM8731_ROUT1V,
- 7, 1, 0),
-
--SOC_DOUBLE_R("Capture Volume", WM8731_LINVOL, WM8731_RINVOL, 0, 31, 0),
-+SOC_DOUBLE_R_TLV("Capture Volume", WM8731_LINVOL, WM8731_RINVOL, 0, 31, 0,
-+ in_tlv),
- SOC_DOUBLE_R("Line Capture Switch", WM8731_LINVOL, WM8731_RINVOL, 7, 1, 1),
-
- SOC_SINGLE("Mic Boost (+20dB)", WM8731_APANA, 0, 1, 0),
--SOC_SINGLE("Capture Mic Switch", WM8731_APANA, 1, 1, 1),
-+SOC_SINGLE("Mic Capture Switch", WM8731_APANA, 1, 1, 1),
-
--SOC_SINGLE("Sidetone Playback Volume", WM8731_APANA, 6, 3, 1),
-+SOC_SINGLE_TLV("Sidetone Playback Volume", WM8731_APANA, 6, 3, 1,
-+ sidetone_tlv),
-
- SOC_SINGLE("ADC High Pass Filter Switch", WM8731_APDIGI, 0, 1, 1),
- SOC_SINGLE("Store DC Offset Switch", WM8731_APDIGI, 4, 1, 0),
-@@ -260,12 +216,12 @@
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- struct wm8731_priv *wm8731 = codec->private_data;
-- u16 iface = wm8731_read_reg_cache(codec, WM8731_IFACE) & 0xfff3;
-+ u16 iface = snd_soc_read(codec, WM8731_IFACE) & 0xfff3;
- int i = get_coeff(wm8731->sysclk, params_rate(params));
- u16 srate = (coeff_div[i].sr << 2) |
- (coeff_div[i].bosr << 1) | coeff_div[i].usb;
-
-- wm8731_write(codec, WM8731_SRATE, srate);
-+ snd_soc_write(codec, WM8731_SRATE, srate);
-
- /* bit size */
- switch (params_format(params)) {
-@@ -279,7 +235,7 @@
- break;
- }
-
-- wm8731_write(codec, WM8731_IFACE, iface);
-+ snd_soc_write(codec, WM8731_IFACE, iface);
- return 0;
- }
-
-@@ -291,7 +247,7 @@
- struct snd_soc_codec *codec = socdev->card->codec;
-
- /* set active */
-- wm8731_write(codec, WM8731_ACTIVE, 0x0001);
-+ snd_soc_write(codec, WM8731_ACTIVE, 0x0001);
-
- return 0;
- }
-@@ -306,19 +262,19 @@
- /* deactivate */
- if (!codec->active) {
- udelay(50);
-- wm8731_write(codec, WM8731_ACTIVE, 0x0);
-+ snd_soc_write(codec, WM8731_ACTIVE, 0x0);
- }
- }
-
- static int wm8731_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-- u16 mute_reg = wm8731_read_reg_cache(codec, WM8731_APDIGI) & 0xfff7;
-+ u16 mute_reg = snd_soc_read(codec, WM8731_APDIGI) & 0xfff7;
-
- if (mute)
-- wm8731_write(codec, WM8731_APDIGI, mute_reg | 0x8);
-+ snd_soc_write(codec, WM8731_APDIGI, mute_reg | 0x8);
- else
-- wm8731_write(codec, WM8731_APDIGI, mute_reg);
-+ snd_soc_write(codec, WM8731_APDIGI, mute_reg);
- return 0;
- }
-
-@@ -396,7 +352,7 @@
- }
-
- /* set iface */
-- wm8731_write(codec, WM8731_IFACE, iface);
-+ snd_soc_write(codec, WM8731_IFACE, iface);
- return 0;
- }
-
-@@ -412,12 +368,12 @@
- break;
- case SND_SOC_BIAS_STANDBY:
- /* Clear PWROFF, gate CLKOUT, everything else as-is */
-- reg = wm8731_read_reg_cache(codec, WM8731_PWR) & 0xff7f;
-- wm8731_write(codec, WM8731_PWR, reg | 0x0040);
-+ reg = snd_soc_read(codec, WM8731_PWR) & 0xff7f;
-+ snd_soc_write(codec, WM8731_PWR, reg | 0x0040);
- break;
- case SND_SOC_BIAS_OFF:
-- wm8731_write(codec, WM8731_ACTIVE, 0x0);
-- wm8731_write(codec, WM8731_PWR, 0xffff);
-+ snd_soc_write(codec, WM8731_ACTIVE, 0x0);
-+ snd_soc_write(codec, WM8731_PWR, 0xffff);
- break;
- }
- codec->bias_level = level;
-@@ -457,15 +413,17 @@
- .rates = WM8731_RATES,
- .formats = WM8731_FORMATS,},
- .ops = &wm8731_dai_ops,
-+ .symmetric_rates = 1,
- };
- EXPORT_SYMBOL_GPL(wm8731_dai);
-
-+#ifdef CONFIG_PM
- static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
- {
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct snd_soc_codec *codec = socdev->card->codec;
-
-- wm8731_write(codec, WM8731_ACTIVE, 0x0);
-+ snd_soc_write(codec, WM8731_ACTIVE, 0x0);
- wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
- return 0;
- }
-@@ -488,6 +446,10 @@
- wm8731_set_bias_level(codec, codec->suspend_bias_level);
- return 0;
- }
-+#else
-+#define wm8731_suspend NULL
-+#define wm8731_resume NULL
-+#endif
-
- static int wm8731_probe(struct platform_device *pdev)
- {
-@@ -547,15 +509,16 @@
- };
- EXPORT_SYMBOL_GPL(soc_codec_dev_wm8731);
-
--static int wm8731_register(struct wm8731_priv *wm8731)
-+static int wm8731_register(struct wm8731_priv *wm8731,
-+ enum snd_soc_control_type control)
- {
- int ret;
- struct snd_soc_codec *codec = &wm8731->codec;
-- u16 reg;
-
- if (wm8731_codec) {
- dev_err(codec->dev, "Another WM8731 is registered\n");
-- return -EINVAL;
-+ ret = -EINVAL;
-+ goto err;
- }
-
- mutex_init(&codec->mutex);
-@@ -565,8 +528,6 @@
- codec->private_data = wm8731;
- codec->name = "WM8731";
- codec->owner = THIS_MODULE;
-- codec->read = wm8731_read_reg_cache;
-- codec->write = wm8731_write;
- codec->bias_level = SND_SOC_BIAS_OFF;
- codec->set_bias_level = wm8731_set_bias_level;
- codec->dai = &wm8731_dai;
-@@ -576,10 +537,16 @@
-
- memcpy(codec->reg_cache, wm8731_reg, sizeof(wm8731_reg));
-
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
- ret = wm8731_reset(codec);
- if (ret < 0) {
-- dev_err(codec->dev, "Failed to issue reset\n");
-- return ret;
-+ dev_err(codec->dev, "Failed to issue reset: %d\n", ret);
-+ goto err;
- }
-
- wm8731_dai.dev = codec->dev;
-@@ -587,35 +554,36 @@
- wm8731_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
- /* Latch the update bits */
-- reg = wm8731_read_reg_cache(codec, WM8731_LOUT1V);
-- wm8731_write(codec, WM8731_LOUT1V, reg & ~0x0100);
-- reg = wm8731_read_reg_cache(codec, WM8731_ROUT1V);
-- wm8731_write(codec, WM8731_ROUT1V, reg & ~0x0100);
-- reg = wm8731_read_reg_cache(codec, WM8731_LINVOL);
-- wm8731_write(codec, WM8731_LINVOL, reg & ~0x0100);
-- reg = wm8731_read_reg_cache(codec, WM8731_RINVOL);
-- wm8731_write(codec, WM8731_RINVOL, reg & ~0x0100);
-+ snd_soc_update_bits(codec, WM8731_LOUT1V, 0x100, 0);
-+ snd_soc_update_bits(codec, WM8731_ROUT1V, 0x100, 0);
-+ snd_soc_update_bits(codec, WM8731_LINVOL, 0x100, 0);
-+ snd_soc_update_bits(codec, WM8731_RINVOL, 0x100, 0);
-
- /* Disable bypass path by default */
-- reg = wm8731_read_reg_cache(codec, WM8731_APANA);
-- wm8731_write(codec, WM8731_APANA, reg & ~0x4);
-+ snd_soc_update_bits(codec, WM8731_APANA, 0x4, 0);
-
- wm8731_codec = codec;
-
- ret = snd_soc_register_codec(codec);
- if (ret != 0) {
- dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-- return ret;
-+ goto err;
- }
-
- ret = snd_soc_register_dai(&wm8731_dai);
- if (ret != 0) {
- dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
- snd_soc_unregister_codec(codec);
-- return ret;
-+ goto err_codec;
- }
-
- return 0;
-+
-+err_codec:
-+ snd_soc_unregister_codec(codec);
-+err:
-+ kfree(wm8731);
-+ return ret;
- }
-
- static void wm8731_unregister(struct wm8731_priv *wm8731)
-@@ -628,30 +596,6 @@
- }
-
- #if defined(CONFIG_SPI_MASTER)
--static int wm8731_spi_write(struct spi_device *spi, const char *data, int len)
--{
-- struct spi_transfer t;
-- struct spi_message m;
-- u8 msg[2];
--
-- if (len <= 0)
-- return 0;
--
-- msg[0] = data[0];
-- msg[1] = data[1];
--
-- spi_message_init(&m);
-- memset(&t, 0, (sizeof t));
--
-- t.tx_buf = &msg[0];
-- t.len = len;
--
-- spi_message_add_tail(&t, &m);
-- spi_sync(spi, &m);
--
-- return len;
--}
--
- static int __devinit wm8731_spi_probe(struct spi_device *spi)
- {
- struct snd_soc_codec *codec;
-@@ -663,23 +607,37 @@
-
- codec = &wm8731->codec;
- codec->control_data = spi;
-- codec->hw_write = (hw_write_t)wm8731_spi_write;
- codec->dev = &spi->dev;
-
-- spi->dev.driver_data = wm8731;
-+ dev_set_drvdata(&spi->dev, wm8731);
-
-- return wm8731_register(wm8731);
-+ return wm8731_register(wm8731, SND_SOC_SPI);
- }
-
- static int __devexit wm8731_spi_remove(struct spi_device *spi)
- {
-- struct wm8731_priv *wm8731 = spi->dev.driver_data;
-+ struct wm8731_priv *wm8731 = dev_get_drvdata(&spi->dev);
-
- wm8731_unregister(wm8731);
-
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8731_spi_suspend(struct spi_device *spi, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&spi->dev);
-+}
-+
-+static int wm8731_spi_resume(struct spi_device *spi)
-+{
-+ return snd_soc_resume_device(&spi->dev);
-+}
-+#else
-+#define wm8731_spi_suspend NULL
-+#define wm8731_spi_resume NULL
-+#endif
-+
- static struct spi_driver wm8731_spi_driver = {
- .driver = {
- .name = "wm8731",
-@@ -687,6 +645,8 @@
- .owner = THIS_MODULE,
- },
- .probe = wm8731_spi_probe,
-+ .suspend = wm8731_spi_suspend,
-+ .resume = wm8731_spi_resume,
- .remove = __devexit_p(wm8731_spi_remove),
- };
- #endif /* CONFIG_SPI_MASTER */
-@@ -703,14 +663,13 @@
- return -ENOMEM;
-
- codec = &wm8731->codec;
-- codec->hw_write = (hw_write_t)i2c_master_send;
-
- i2c_set_clientdata(i2c, wm8731);
- codec->control_data = i2c;
-
- codec->dev = &i2c->dev;
-
-- return wm8731_register(wm8731);
-+ return wm8731_register(wm8731, SND_SOC_I2C);
- }
-
- static __devexit int wm8731_i2c_remove(struct i2c_client *client)
-@@ -720,6 +679,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8731_i2c_suspend(struct i2c_client *i2c, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&i2c->dev);
-+}
-+
-+static int wm8731_i2c_resume(struct i2c_client *i2c)
-+{
-+ return snd_soc_resume_device(&i2c->dev);
-+}
-+#else
-+#define wm8731_i2c_suspend NULL
-+#define wm8731_i2c_resume NULL
-+#endif
-+
- static const struct i2c_device_id wm8731_i2c_id[] = {
- { "wm8731", 0 },
- { }
-@@ -733,6 +707,8 @@
- },
- .probe = wm8731_i2c_probe,
- .remove = __devexit_p(wm8731_i2c_remove),
-+ .suspend = wm8731_i2c_suspend,
-+ .resume = wm8731_i2c_resume,
- .id_table = wm8731_i2c_id,
- };
- #endif
-Index: linux-2.6.30/sound/soc/codecs/wm8750.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8750.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8750.c 2011-02-01 16:40:30.189047317 +0100
-@@ -55,50 +55,7 @@
- 0x0079, 0x0079, 0x0079, /* 40 */
- };
-
--/*
-- * read wm8750 register cache
-- */
--static inline unsigned int wm8750_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg > WM8750_CACHE_REGNUM)
-- return -1;
-- return cache[reg];
--}
--
--/*
-- * write wm8750 register cache
-- */
--static inline void wm8750_write_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg > WM8750_CACHE_REGNUM)
-- return;
-- cache[reg] = value;
--}
--
--static int wm8750_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- /* data is
-- * D15..D9 WM8753 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8750_write_reg_cache(codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--#define wm8750_reset(c) wm8750_write(c, WM8750_RESET, 0)
-+#define wm8750_reset(c) snd_soc_write(c, WM8750_RESET, 0)
-
- /*
- * WM8750 Controls
-@@ -594,7 +551,7 @@
- return -EINVAL;
- }
-
-- wm8750_write(codec, WM8750_IFACE, iface);
-+ snd_soc_write(codec, WM8750_IFACE, iface);
- return 0;
- }
-
-@@ -606,8 +563,8 @@
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- struct wm8750_priv *wm8750 = codec->private_data;
-- u16 iface = wm8750_read_reg_cache(codec, WM8750_IFACE) & 0x1f3;
-- u16 srate = wm8750_read_reg_cache(codec, WM8750_SRATE) & 0x1c0;
-+ u16 iface = snd_soc_read(codec, WM8750_IFACE) & 0x1f3;
-+ u16 srate = snd_soc_read(codec, WM8750_SRATE) & 0x1c0;
- int coeff = get_coeff(wm8750->sysclk, params_rate(params));
-
- /* bit size */
-@@ -626,9 +583,9 @@
- }
-
- /* set iface & srate */
-- wm8750_write(codec, WM8750_IFACE, iface);
-+ snd_soc_write(codec, WM8750_IFACE, iface);
- if (coeff >= 0)
-- wm8750_write(codec, WM8750_SRATE, srate |
-+ snd_soc_write(codec, WM8750_SRATE, srate |
- (coeff_div[coeff].sr << 1) | coeff_div[coeff].usb);
-
- return 0;
-@@ -637,35 +594,35 @@
- static int wm8750_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-- u16 mute_reg = wm8750_read_reg_cache(codec, WM8750_ADCDAC) & 0xfff7;
-+ u16 mute_reg = snd_soc_read(codec, WM8750_ADCDAC) & 0xfff7;
-
- if (mute)
-- wm8750_write(codec, WM8750_ADCDAC, mute_reg | 0x8);
-+ snd_soc_write(codec, WM8750_ADCDAC, mute_reg | 0x8);
- else
-- wm8750_write(codec, WM8750_ADCDAC, mute_reg);
-+ snd_soc_write(codec, WM8750_ADCDAC, mute_reg);
- return 0;
- }
-
- static int wm8750_set_bias_level(struct snd_soc_codec *codec,
- enum snd_soc_bias_level level)
- {
-- u16 pwr_reg = wm8750_read_reg_cache(codec, WM8750_PWR1) & 0xfe3e;
-+ u16 pwr_reg = snd_soc_read(codec, WM8750_PWR1) & 0xfe3e;
-
- switch (level) {
- case SND_SOC_BIAS_ON:
- /* set vmid to 50k and unmute dac */
-- wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x00c0);
-+ snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x00c0);
- break;
- case SND_SOC_BIAS_PREPARE:
- /* set vmid to 5k for quick power up */
-- wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x01c1);
-+ snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x01c1);
- break;
- case SND_SOC_BIAS_STANDBY:
- /* mute dac and set vmid to 500k, enable VREF */
-- wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x0141);
-+ snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x0141);
- break;
- case SND_SOC_BIAS_OFF:
-- wm8750_write(codec, WM8750_PWR1, 0x0001);
-+ snd_soc_write(codec, WM8750_PWR1, 0x0001);
- break;
- }
- codec->bias_level = level;
-@@ -754,15 +711,14 @@
- * initialise the WM8750 driver
- * register the mixer and dsp interfaces with the kernel
- */
--static int wm8750_init(struct snd_soc_device *socdev)
-+static int wm8750_init(struct snd_soc_device *socdev,
-+ enum snd_soc_control_type control)
- {
- struct snd_soc_codec *codec = socdev->card->codec;
- int reg, ret = 0;
-
- codec->name = "WM8750";
- codec->owner = THIS_MODULE;
-- codec->read = wm8750_read_reg_cache;
-- codec->write = wm8750_write;
- codec->set_bias_level = wm8750_set_bias_level;
- codec->dai = &wm8750_dai;
- codec->num_dai = 1;
-@@ -771,13 +727,23 @@
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-- wm8750_reset(codec);
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8750: failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
-+ ret = wm8750_reset(codec);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8750: failed to reset: %d\n", ret);
-+ goto err;
-+ }
-
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
- printk(KERN_ERR "wm8750: failed to create pcms\n");
-- goto pcm_err;
-+ goto err;
- }
-
- /* charge output caps */
-@@ -786,22 +752,22 @@
- schedule_delayed_work(&codec->delayed_work, msecs_to_jiffies(1000));
-
- /* set the update bits */
-- reg = wm8750_read_reg_cache(codec, WM8750_LDAC);
-- wm8750_write(codec, WM8750_LDAC, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_RDAC);
-- wm8750_write(codec, WM8750_RDAC, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_LOUT1V);
-- wm8750_write(codec, WM8750_LOUT1V, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_ROUT1V);
-- wm8750_write(codec, WM8750_ROUT1V, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_LOUT2V);
-- wm8750_write(codec, WM8750_LOUT2V, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_ROUT2V);
-- wm8750_write(codec, WM8750_ROUT2V, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_LINVOL);
-- wm8750_write(codec, WM8750_LINVOL, reg | 0x0100);
-- reg = wm8750_read_reg_cache(codec, WM8750_RINVOL);
-- wm8750_write(codec, WM8750_RINVOL, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_LDAC);
-+ snd_soc_write(codec, WM8750_LDAC, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_RDAC);
-+ snd_soc_write(codec, WM8750_RDAC, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_LOUT1V);
-+ snd_soc_write(codec, WM8750_LOUT1V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_ROUT1V);
-+ snd_soc_write(codec, WM8750_ROUT1V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_LOUT2V);
-+ snd_soc_write(codec, WM8750_LOUT2V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_ROUT2V);
-+ snd_soc_write(codec, WM8750_ROUT2V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_LINVOL);
-+ snd_soc_write(codec, WM8750_LINVOL, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8750_RINVOL);
-+ snd_soc_write(codec, WM8750_RINVOL, reg | 0x0100);
-
- snd_soc_add_controls(codec, wm8750_snd_controls,
- ARRAY_SIZE(wm8750_snd_controls));
-@@ -816,7 +782,7 @@
- card_err:
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
--pcm_err:
-+err:
- kfree(codec->reg_cache);
- return ret;
- }
-@@ -844,7 +810,7 @@
- i2c_set_clientdata(i2c, codec);
- codec->control_data = i2c;
-
-- ret = wm8750_init(socdev);
-+ ret = wm8750_init(socdev, SND_SOC_I2C);
- if (ret < 0)
- pr_err("failed to initialise WM8750\n");
-
-@@ -924,7 +890,7 @@
-
- codec->control_data = spi;
-
-- ret = wm8750_init(socdev);
-+ ret = wm8750_init(socdev, SND_SOC_SPI);
- if (ret < 0)
- dev_err(&spi->dev, "failed to initialise WM8750\n");
-
-@@ -945,30 +911,6 @@
- .probe = wm8750_spi_probe,
- .remove = __devexit_p(wm8750_spi_remove),
- };
--
--static int wm8750_spi_write(struct spi_device *spi, const char *data, int len)
--{
-- struct spi_transfer t;
-- struct spi_message m;
-- u8 msg[2];
--
-- if (len <= 0)
-- return 0;
--
-- msg[0] = data[0];
-- msg[1] = data[1];
--
-- spi_message_init(&m);
-- memset(&t, 0, (sizeof t));
--
-- t.tx_buf = &msg[0];
-- t.len = len;
--
-- spi_message_add_tail(&t, &m);
-- spi_sync(spi, &m);
--
-- return len;
--}
- #endif
-
- static int wm8750_probe(struct platform_device *pdev)
-@@ -1002,13 +944,11 @@
-
- #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t)i2c_master_send;
- ret = wm8750_add_i2c_device(pdev, setup);
- }
- #endif
- #if defined(CONFIG_SPI_MASTER)
- if (setup->spi) {
-- codec->hw_write = (hw_write_t)wm8750_spi_write;
- ret = spi_register_driver(&wm8750_spi_driver);
- if (ret != 0)
- printk(KERN_ERR "can't add spi driver");
-Index: linux-2.6.30/sound/soc/codecs/wm8753.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8753.c 2011-02-01 16:39:20.000000000 +0100
-+++ linux-2.6.30/sound/soc/codecs/wm8753.c 2011-02-01 16:44:16.336265765 +0100
-@@ -79,7 +79,7 @@
- 0x0097, 0x0097, 0x0000, 0x0004,
- 0x0000, 0x0083, 0x0024, 0x01ba,
- 0x0000, 0x0083, 0x0024, 0x01ba,
-- 0x0000, 0x0000
-+ 0x0000, 0x0000, 0x0000
- };
-
- /* codec private data */
-@@ -595,6 +595,7 @@
-
- /* Mono Capture mixer-mux */
- {"Capture Right Mixer", "Stereo", "Capture Right Mux"},
-+ {"Capture Left Mixer", "Stereo", "Capture Left Mux"},
- {"Capture Left Mixer", "Analogue Mix Left", "Capture Left Mux"},
- {"Capture Left Mixer", "Analogue Mix Left", "Capture Right Mux"},
- {"Capture Right Mixer", "Analogue Mix Right", "Capture Left Mux"},
-@@ -703,7 +704,7 @@
-
- if ((Ndiv < 6) || (Ndiv > 12))
- printk(KERN_WARNING
-- "wm8753: unsupported N = %d\n", Ndiv);
-+ "wm8753: unsupported N = %u\n", Ndiv);
-
- pll_div->n = Ndiv;
- Nmod = target % source;
-@@ -723,8 +724,8 @@
- pll_div->k = K;
- }
-
--static int wm8753_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm8753_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- u16 reg, enable;
- int offset;
-@@ -1660,7 +1661,7 @@
- codec->set_bias_level = wm8753_set_bias_level;
- codec->dai = wm8753_dai;
- codec->num_dai = 2;
-- codec->reg_cache_size = ARRAY_SIZE(wm8753->reg_cache);
-+ codec->reg_cache_size = ARRAY_SIZE(wm8753->reg_cache) + 1;
- codec->reg_cache = &wm8753->reg_cache;
- codec->private_data = wm8753;
-
-@@ -1766,6 +1767,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8753_i2c_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&client->dev);
-+}
-+
-+static int wm8753_i2c_resume(struct i2c_client *client)
-+{
-+ return snd_soc_resume_device(&client->dev);
-+}
-+#else
-+#define wm8753_i2c_suspend NULL
-+#define wm8753_i2c_resume NULL
-+#endif
-+
- static const struct i2c_device_id wm8753_i2c_id[] = {
- { "wm8753", 0 },
- { }
-@@ -1779,6 +1795,8 @@
- },
- .probe = wm8753_i2c_probe,
- .remove = wm8753_i2c_remove,
-+ .suspend = wm8753_i2c_suspend,
-+ .resume = wm8753_i2c_resume,
- .id_table = wm8753_i2c_id,
- };
- #endif
-@@ -1822,18 +1840,34 @@
- codec->hw_write = (hw_write_t)wm8753_spi_write;
- codec->dev = &spi->dev;
-
-- spi->dev.driver_data = wm8753;
-+ dev_set_drvdata(&spi->dev, wm8753);
-
- return wm8753_register(wm8753);
- }
-
- static int __devexit wm8753_spi_remove(struct spi_device *spi)
- {
-- struct wm8753_priv *wm8753 = spi->dev.driver_data;
-+ struct wm8753_priv *wm8753 = dev_get_drvdata(&spi->dev);
- wm8753_unregister(wm8753);
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8753_spi_suspend(struct spi_device *spi, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&spi->dev);
-+}
-+
-+static int wm8753_spi_resume(struct spi_device *spi)
-+{
-+ return snd_soc_resume_device(&spi->dev);
-+}
-+
-+#else
-+#define wm8753_spi_suspend NULL
-+#define wm8753_spi_resume NULL
-+#endif
-+
- static struct spi_driver wm8753_spi_driver = {
- .driver = {
- .name = "wm8753",
-@@ -1842,6 +1876,8 @@
- },
- .probe = wm8753_spi_probe,
- .remove = __devexit_p(wm8753_spi_remove),
-+ .suspend = wm8753_spi_suspend,
-+ .resume = wm8753_spi_resume,
- };
- #endif
-
-Index: linux-2.6.30/sound/soc/codecs/wm8900.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8900.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8900.c 2011-02-01 16:40:30.189047317 +0100
-@@ -116,6 +116,7 @@
- #define WM8900_REG_CLOCKING2_DAC_CLKDIV 0x1c
-
- #define WM8900_REG_DACCTRL_MUTE 0x004
-+#define WM8900_REG_DACCTRL_DAC_SB_FILT 0x100
- #define WM8900_REG_DACCTRL_AIF_LRCLKRATE 0x400
-
- #define WM8900_REG_AUDIO3_ADCLRC_DIR 0x0800
-@@ -182,111 +183,20 @@
- /* Remaining registers all zero */
- };
-
--/*
-- * read wm8900 register cache
-- */
--static inline unsigned int wm8900_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
--
-- BUG_ON(reg >= WM8900_MAXREG);
--
-- if (reg == WM8900_REG_ID)
-- return 0;
--
-- return cache[reg];
--}
--
--/*
-- * write wm8900 register cache
-- */
--static inline void wm8900_write_reg_cache(struct snd_soc_codec *codec,
-- u16 reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
--
-- BUG_ON(reg >= WM8900_MAXREG);
--
-- cache[reg] = value;
--}
--
--/*
-- * write to the WM8900 register space
-- */
--static int wm8900_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[3];
--
-- if (value == wm8900_read_reg_cache(codec, reg))
-- return 0;
--
-- /* data is
-- * D15..D9 WM8900 register offset
-- * D8...D0 register data
-- */
-- data[0] = reg;
-- data[1] = value >> 8;
-- data[2] = value & 0x00ff;
--
-- wm8900_write_reg_cache(codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 3) == 3)
-- return 0;
-- else
-- return -EIO;
--}
--
--/*
-- * Read from the wm8900.
-- */
--static unsigned int wm8900_chip_read(struct snd_soc_codec *codec, u8 reg)
--{
-- struct i2c_msg xfer[2];
-- u16 data;
-- int ret;
-- struct i2c_client *client = codec->control_data;
--
-- BUG_ON(reg != WM8900_REG_ID && reg != WM8900_REG_POWER1);
--
-- /* Write register */
-- xfer[0].addr = client->addr;
-- xfer[0].flags = 0;
-- xfer[0].len = 1;
-- xfer[0].buf = ®
--
-- /* Read data */
-- xfer[1].addr = client->addr;
-- xfer[1].flags = I2C_M_RD;
-- xfer[1].len = 2;
-- xfer[1].buf = (u8 *)&data;
--
-- ret = i2c_transfer(client->adapter, xfer, 2);
-- if (ret != 2) {
-- printk(KERN_CRIT "i2c_transfer returned %d\n", ret);
-- return 0;
-- }
--
-- return (data >> 8) | ((data & 0xff) << 8);
--}
--
--/*
-- * Read from the WM8900 register space. Most registers can't be read
-- * and are therefore supplied from cache.
-- */
--static unsigned int wm8900_read(struct snd_soc_codec *codec, unsigned int reg)
-+static int wm8900_volatile_register(unsigned int reg)
- {
- switch (reg) {
- case WM8900_REG_ID:
-- return wm8900_chip_read(codec, reg);
-+ case WM8900_REG_POWER1:
-+ return 1;
- default:
-- return wm8900_read_reg_cache(codec, reg);
-+ return 0;
- }
- }
-
- static void wm8900_reset(struct snd_soc_codec *codec)
- {
-- wm8900_write(codec, WM8900_REG_RESET, 0);
-+ snd_soc_write(codec, WM8900_REG_RESET, 0);
-
- memcpy(codec->reg_cache, wm8900_reg_defaults,
- sizeof(codec->reg_cache));
-@@ -296,14 +206,14 @@
- struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
-- u16 hpctl1 = wm8900_read(codec, WM8900_REG_HPCTL1);
-+ u16 hpctl1 = snd_soc_read(codec, WM8900_REG_HPCTL1);
-
- switch (event) {
- case SND_SOC_DAPM_PRE_PMU:
- /* Clamp headphone outputs */
- hpctl1 = WM8900_REG_HPCTL1_HP_CLAMP_IP |
- WM8900_REG_HPCTL1_HP_CLAMP_OP;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
- break;
-
- case SND_SOC_DAPM_POST_PMU:
-@@ -312,41 +222,41 @@
- hpctl1 |= WM8900_REG_HPCTL1_HP_SHORT |
- WM8900_REG_HPCTL1_HP_SHORT2 |
- WM8900_REG_HPCTL1_HP_IPSTAGE_ENA;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
-
- msleep(400);
-
- /* Enable the output stage */
- hpctl1 &= ~WM8900_REG_HPCTL1_HP_CLAMP_OP;
- hpctl1 |= WM8900_REG_HPCTL1_HP_OPSTAGE_ENA;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
-
- /* Remove the shorts */
- hpctl1 &= ~WM8900_REG_HPCTL1_HP_SHORT2;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
- hpctl1 &= ~WM8900_REG_HPCTL1_HP_SHORT;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
- break;
-
- case SND_SOC_DAPM_PRE_PMD:
- /* Short the output */
- hpctl1 |= WM8900_REG_HPCTL1_HP_SHORT;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
-
- /* Disable the output stage */
- hpctl1 &= ~WM8900_REG_HPCTL1_HP_OPSTAGE_ENA;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
-
- /* Clamp the outputs and power down input */
- hpctl1 |= WM8900_REG_HPCTL1_HP_CLAMP_IP |
- WM8900_REG_HPCTL1_HP_CLAMP_OP;
- hpctl1 &= ~WM8900_REG_HPCTL1_HP_IPSTAGE_ENA;
-- wm8900_write(codec, WM8900_REG_HPCTL1, hpctl1);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, hpctl1);
- break;
-
- case SND_SOC_DAPM_POST_PMD:
- /* Disable everything */
-- wm8900_write(codec, WM8900_REG_HPCTL1, 0);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, 0);
- break;
-
- default:
-@@ -439,7 +349,6 @@
- SOC_ENUM("DAC Mute Rate", dac_mute_rate),
- SOC_SINGLE("DAC Mono Switch", WM8900_REG_DACCTRL, 9, 1, 0),
- SOC_ENUM("DAC Deemphasis", dac_deemphasis),
--SOC_SINGLE("DAC Sloping Stopband Filter Switch", WM8900_REG_DACCTRL, 8, 1, 0),
- SOC_SINGLE("DAC Sigma-Delta Modulator Clock Switch", WM8900_REG_DACCTRL,
- 12, 1, 0),
-
-@@ -723,7 +632,7 @@
- struct snd_soc_codec *codec = socdev->card->codec;
- u16 reg;
-
-- reg = wm8900_read(codec, WM8900_REG_AUDIO1) & ~0x60;
-+ reg = snd_soc_read(codec, WM8900_REG_AUDIO1) & ~0x60;
-
- switch (params_format(params)) {
- case SNDRV_PCM_FORMAT_S16_LE:
-@@ -741,7 +650,18 @@
- return -EINVAL;
- }
-
-- wm8900_write(codec, WM8900_REG_AUDIO1, reg);
-+ snd_soc_write(codec, WM8900_REG_AUDIO1, reg);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ reg = snd_soc_read(codec, WM8900_REG_DACCTRL);
-+
-+ if (params_rate(params) <= 24000)
-+ reg |= WM8900_REG_DACCTRL_DAC_SB_FILT;
-+ else
-+ reg &= ~WM8900_REG_DACCTRL_DAC_SB_FILT;
-+
-+ snd_soc_write(codec, WM8900_REG_DACCTRL, reg);
-+ }
-
- return 0;
- }
-@@ -778,11 +698,11 @@
- }
-
- if (target > 100000000)
-- printk(KERN_WARNING "wm8900: FLL rate %d out of range, Fref=%d"
-- " Fout=%d\n", target, Fref, Fout);
-+ printk(KERN_WARNING "wm8900: FLL rate %u out of range, Fref=%u"
-+ " Fout=%u\n", target, Fref, Fout);
- if (div > 32) {
- printk(KERN_ERR "wm8900: Invalid FLL division rate %u, "
-- "Fref=%d, Fout=%d, target=%d\n",
-+ "Fref=%u, Fout=%u, target=%u\n",
- div, Fref, Fout, target);
- return -EINVAL;
- }
-@@ -834,18 +754,18 @@
- return 0;
-
- /* The digital side should be disabled during any change. */
-- reg = wm8900_read(codec, WM8900_REG_POWER1);
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ reg = snd_soc_read(codec, WM8900_REG_POWER1);
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- reg & (~WM8900_REG_POWER1_FLL_ENA));
-
- /* Disable the FLL? */
- if (!freq_in || !freq_out) {
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING1);
-- wm8900_write(codec, WM8900_REG_CLOCKING1,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING1);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING1,
- reg & (~WM8900_REG_CLOCKING1_MCLK_SRC));
-
-- reg = wm8900_read(codec, WM8900_REG_FLLCTL1);
-- wm8900_write(codec, WM8900_REG_FLLCTL1,
-+ reg = snd_soc_read(codec, WM8900_REG_FLLCTL1);
-+ snd_soc_write(codec, WM8900_REG_FLLCTL1,
- reg & (~WM8900_REG_FLLCTL1_OSC_ENA));
-
- wm8900->fll_in = freq_in;
-@@ -862,40 +782,40 @@
-
- /* The osclilator *MUST* be enabled before we enable the
- * digital circuit. */
-- wm8900_write(codec, WM8900_REG_FLLCTL1,
-+ snd_soc_write(codec, WM8900_REG_FLLCTL1,
- fll_div.fll_ratio | WM8900_REG_FLLCTL1_OSC_ENA);
-
-- wm8900_write(codec, WM8900_REG_FLLCTL4, fll_div.n >> 5);
-- wm8900_write(codec, WM8900_REG_FLLCTL5,
-+ snd_soc_write(codec, WM8900_REG_FLLCTL4, fll_div.n >> 5);
-+ snd_soc_write(codec, WM8900_REG_FLLCTL5,
- (fll_div.fllclk_div << 6) | (fll_div.n & 0x1f));
-
- if (fll_div.k) {
-- wm8900_write(codec, WM8900_REG_FLLCTL2,
-+ snd_soc_write(codec, WM8900_REG_FLLCTL2,
- (fll_div.k >> 8) | 0x100);
-- wm8900_write(codec, WM8900_REG_FLLCTL3, fll_div.k & 0xff);
-+ snd_soc_write(codec, WM8900_REG_FLLCTL3, fll_div.k & 0xff);
- } else
-- wm8900_write(codec, WM8900_REG_FLLCTL2, 0);
-+ snd_soc_write(codec, WM8900_REG_FLLCTL2, 0);
-
- if (fll_div.fll_slow_lock_ref)
-- wm8900_write(codec, WM8900_REG_FLLCTL6,
-+ snd_soc_write(codec, WM8900_REG_FLLCTL6,
- WM8900_REG_FLLCTL6_FLL_SLOW_LOCK_REF);
- else
-- wm8900_write(codec, WM8900_REG_FLLCTL6, 0);
-+ snd_soc_write(codec, WM8900_REG_FLLCTL6, 0);
-
-- reg = wm8900_read(codec, WM8900_REG_POWER1);
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ reg = snd_soc_read(codec, WM8900_REG_POWER1);
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- reg | WM8900_REG_POWER1_FLL_ENA);
-
- reenable:
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING1);
-- wm8900_write(codec, WM8900_REG_CLOCKING1,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING1);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING1,
- reg | WM8900_REG_CLOCKING1_MCLK_SRC);
-
- return 0;
- }
-
--static int wm8900_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm8900_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- return wm8900_set_fll(codec_dai->codec, pll_id, freq_in, freq_out);
- }
-@@ -908,38 +828,38 @@
-
- switch (div_id) {
- case WM8900_BCLK_DIV:
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING1);
-- wm8900_write(codec, WM8900_REG_CLOCKING1,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING1);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING1,
- div | (reg & WM8900_REG_CLOCKING1_BCLK_MASK));
- break;
- case WM8900_OPCLK_DIV:
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING1);
-- wm8900_write(codec, WM8900_REG_CLOCKING1,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING1);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING1,
- div | (reg & WM8900_REG_CLOCKING1_OPCLK_MASK));
- break;
- case WM8900_DAC_LRCLK:
-- reg = wm8900_read(codec, WM8900_REG_AUDIO4);
-- wm8900_write(codec, WM8900_REG_AUDIO4,
-+ reg = snd_soc_read(codec, WM8900_REG_AUDIO4);
-+ snd_soc_write(codec, WM8900_REG_AUDIO4,
- div | (reg & WM8900_LRC_MASK));
- break;
- case WM8900_ADC_LRCLK:
-- reg = wm8900_read(codec, WM8900_REG_AUDIO3);
-- wm8900_write(codec, WM8900_REG_AUDIO3,
-+ reg = snd_soc_read(codec, WM8900_REG_AUDIO3);
-+ snd_soc_write(codec, WM8900_REG_AUDIO3,
- div | (reg & WM8900_LRC_MASK));
- break;
- case WM8900_DAC_CLKDIV:
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING2);
-- wm8900_write(codec, WM8900_REG_CLOCKING2,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING2);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING2,
- div | (reg & WM8900_REG_CLOCKING2_DAC_CLKDIV));
- break;
- case WM8900_ADC_CLKDIV:
-- reg = wm8900_read(codec, WM8900_REG_CLOCKING2);
-- wm8900_write(codec, WM8900_REG_CLOCKING2,
-+ reg = snd_soc_read(codec, WM8900_REG_CLOCKING2);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING2,
- div | (reg & WM8900_REG_CLOCKING2_ADC_CLKDIV));
- break;
- case WM8900_LRCLK_MODE:
-- reg = wm8900_read(codec, WM8900_REG_DACCTRL);
-- wm8900_write(codec, WM8900_REG_DACCTRL,
-+ reg = snd_soc_read(codec, WM8900_REG_DACCTRL);
-+ snd_soc_write(codec, WM8900_REG_DACCTRL,
- div | (reg & WM8900_REG_DACCTRL_AIF_LRCLKRATE));
- break;
- default:
-@@ -956,10 +876,10 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- unsigned int clocking1, aif1, aif3, aif4;
-
-- clocking1 = wm8900_read(codec, WM8900_REG_CLOCKING1);
-- aif1 = wm8900_read(codec, WM8900_REG_AUDIO1);
-- aif3 = wm8900_read(codec, WM8900_REG_AUDIO3);
-- aif4 = wm8900_read(codec, WM8900_REG_AUDIO4);
-+ clocking1 = snd_soc_read(codec, WM8900_REG_CLOCKING1);
-+ aif1 = snd_soc_read(codec, WM8900_REG_AUDIO1);
-+ aif3 = snd_soc_read(codec, WM8900_REG_AUDIO3);
-+ aif4 = snd_soc_read(codec, WM8900_REG_AUDIO4);
-
- /* set master/slave audio interface */
- switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-@@ -1055,10 +975,10 @@
- return -EINVAL;
- }
-
-- wm8900_write(codec, WM8900_REG_CLOCKING1, clocking1);
-- wm8900_write(codec, WM8900_REG_AUDIO1, aif1);
-- wm8900_write(codec, WM8900_REG_AUDIO3, aif3);
-- wm8900_write(codec, WM8900_REG_AUDIO4, aif4);
-+ snd_soc_write(codec, WM8900_REG_CLOCKING1, clocking1);
-+ snd_soc_write(codec, WM8900_REG_AUDIO1, aif1);
-+ snd_soc_write(codec, WM8900_REG_AUDIO3, aif3);
-+ snd_soc_write(codec, WM8900_REG_AUDIO4, aif4);
-
- return 0;
- }
-@@ -1068,14 +988,14 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- u16 reg;
-
-- reg = wm8900_read(codec, WM8900_REG_DACCTRL);
-+ reg = snd_soc_read(codec, WM8900_REG_DACCTRL);
-
- if (mute)
- reg |= WM8900_REG_DACCTRL_MUTE;
- else
- reg &= ~WM8900_REG_DACCTRL_MUTE;
-
-- wm8900_write(codec, WM8900_REG_DACCTRL, reg);
-+ snd_soc_write(codec, WM8900_REG_DACCTRL, reg);
-
- return 0;
- }
-@@ -1124,11 +1044,11 @@
- switch (level) {
- case SND_SOC_BIAS_ON:
- /* Enable thermal shutdown */
-- reg = wm8900_read(codec, WM8900_REG_GPIO);
-- wm8900_write(codec, WM8900_REG_GPIO,
-+ reg = snd_soc_read(codec, WM8900_REG_GPIO);
-+ snd_soc_write(codec, WM8900_REG_GPIO,
- reg | WM8900_REG_GPIO_TEMP_ENA);
-- reg = wm8900_read(codec, WM8900_REG_ADDCTL);
-- wm8900_write(codec, WM8900_REG_ADDCTL,
-+ reg = snd_soc_read(codec, WM8900_REG_ADDCTL);
-+ snd_soc_write(codec, WM8900_REG_ADDCTL,
- reg | WM8900_REG_ADDCTL_TEMP_SD);
- break;
-
-@@ -1139,69 +1059,69 @@
- /* Charge capacitors if initial power up */
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
- /* STARTUP_BIAS_ENA on */
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- WM8900_REG_POWER1_STARTUP_BIAS_ENA);
-
- /* Startup bias mode */
-- wm8900_write(codec, WM8900_REG_ADDCTL,
-+ snd_soc_write(codec, WM8900_REG_ADDCTL,
- WM8900_REG_ADDCTL_BIAS_SRC |
- WM8900_REG_ADDCTL_VMID_SOFTST);
-
- /* VMID 2x50k */
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- WM8900_REG_POWER1_STARTUP_BIAS_ENA | 0x1);
-
- /* Allow capacitors to charge */
- schedule_timeout_interruptible(msecs_to_jiffies(400));
-
- /* Enable bias */
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- WM8900_REG_POWER1_STARTUP_BIAS_ENA |
- WM8900_REG_POWER1_BIAS_ENA | 0x1);
-
-- wm8900_write(codec, WM8900_REG_ADDCTL, 0);
-+ snd_soc_write(codec, WM8900_REG_ADDCTL, 0);
-
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- WM8900_REG_POWER1_BIAS_ENA | 0x1);
- }
-
-- reg = wm8900_read(codec, WM8900_REG_POWER1);
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ reg = snd_soc_read(codec, WM8900_REG_POWER1);
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- (reg & WM8900_REG_POWER1_FLL_ENA) |
- WM8900_REG_POWER1_BIAS_ENA | 0x1);
-- wm8900_write(codec, WM8900_REG_POWER2,
-+ snd_soc_write(codec, WM8900_REG_POWER2,
- WM8900_REG_POWER2_SYSCLK_ENA);
-- wm8900_write(codec, WM8900_REG_POWER3, 0);
-+ snd_soc_write(codec, WM8900_REG_POWER3, 0);
- break;
-
- case SND_SOC_BIAS_OFF:
- /* Startup bias enable */
-- reg = wm8900_read(codec, WM8900_REG_POWER1);
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ reg = snd_soc_read(codec, WM8900_REG_POWER1);
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- reg & WM8900_REG_POWER1_STARTUP_BIAS_ENA);
-- wm8900_write(codec, WM8900_REG_ADDCTL,
-+ snd_soc_write(codec, WM8900_REG_ADDCTL,
- WM8900_REG_ADDCTL_BIAS_SRC |
- WM8900_REG_ADDCTL_VMID_SOFTST);
-
- /* Discharge caps */
-- wm8900_write(codec, WM8900_REG_POWER1,
-+ snd_soc_write(codec, WM8900_REG_POWER1,
- WM8900_REG_POWER1_STARTUP_BIAS_ENA);
- schedule_timeout_interruptible(msecs_to_jiffies(500));
-
- /* Remove clamp */
-- wm8900_write(codec, WM8900_REG_HPCTL1, 0);
-+ snd_soc_write(codec, WM8900_REG_HPCTL1, 0);
-
- /* Power down */
-- wm8900_write(codec, WM8900_REG_ADDCTL, 0);
-- wm8900_write(codec, WM8900_REG_POWER1, 0);
-- wm8900_write(codec, WM8900_REG_POWER2, 0);
-- wm8900_write(codec, WM8900_REG_POWER3, 0);
-+ snd_soc_write(codec, WM8900_REG_ADDCTL, 0);
-+ snd_soc_write(codec, WM8900_REG_POWER1, 0);
-+ snd_soc_write(codec, WM8900_REG_POWER2, 0);
-+ snd_soc_write(codec, WM8900_REG_POWER3, 0);
-
- /* Need to let things settle before stopping the clock
- * to ensure that restart works, see "Stopping the
- * master clock" in the datasheet. */
- schedule_timeout_interruptible(msecs_to_jiffies(1));
-- wm8900_write(codec, WM8900_REG_POWER2,
-+ snd_soc_write(codec, WM8900_REG_POWER2,
- WM8900_REG_POWER2_SYSCLK_ENA);
- break;
- }
-@@ -1264,7 +1184,7 @@
-
- if (cache) {
- for (i = 0; i < WM8900_MAXREG; i++)
-- wm8900_write(codec, i, cache[i]);
-+ snd_soc_write(codec, i, cache[i]);
- kfree(cache);
- } else
- dev_err(&pdev->dev, "Unable to allocate register cache\n");
-@@ -1297,16 +1217,20 @@
-
- codec->name = "WM8900";
- codec->owner = THIS_MODULE;
-- codec->read = wm8900_read;
-- codec->write = wm8900_write;
- codec->dai = &wm8900_dai;
- codec->num_dai = 1;
-- codec->hw_write = (hw_write_t)i2c_master_send;
- codec->control_data = i2c;
- codec->set_bias_level = wm8900_set_bias_level;
-+ codec->volatile_register = wm8900_volatile_register;
- codec->dev = &i2c->dev;
-
-- reg = wm8900_read(codec, WM8900_REG_ID);
-+ ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
-+ if (ret != 0) {
-+ dev_err(&i2c->dev, "Failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
-+ reg = snd_soc_read(codec, WM8900_REG_ID);
- if (reg != 0x8900) {
- dev_err(&i2c->dev, "Device is not a WM8900 - ID %x\n", reg);
- ret = -ENODEV;
-@@ -1314,7 +1238,7 @@
- }
-
- /* Read back from the chip */
-- reg = wm8900_chip_read(codec, WM8900_REG_POWER1);
-+ reg = snd_soc_read(codec, WM8900_REG_POWER1);
- reg = (reg >> 12) & 0xf;
- dev_info(&i2c->dev, "WM8900 revision %d\n", reg);
-
-@@ -1324,29 +1248,29 @@
- wm8900_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
- /* Latch the volume update bits */
-- wm8900_write(codec, WM8900_REG_LINVOL,
-- wm8900_read(codec, WM8900_REG_LINVOL) | 0x100);
-- wm8900_write(codec, WM8900_REG_RINVOL,
-- wm8900_read(codec, WM8900_REG_RINVOL) | 0x100);
-- wm8900_write(codec, WM8900_REG_LOUT1CTL,
-- wm8900_read(codec, WM8900_REG_LOUT1CTL) | 0x100);
-- wm8900_write(codec, WM8900_REG_ROUT1CTL,
-- wm8900_read(codec, WM8900_REG_ROUT1CTL) | 0x100);
-- wm8900_write(codec, WM8900_REG_LOUT2CTL,
-- wm8900_read(codec, WM8900_REG_LOUT2CTL) | 0x100);
-- wm8900_write(codec, WM8900_REG_ROUT2CTL,
-- wm8900_read(codec, WM8900_REG_ROUT2CTL) | 0x100);
-- wm8900_write(codec, WM8900_REG_LDAC_DV,
-- wm8900_read(codec, WM8900_REG_LDAC_DV) | 0x100);
-- wm8900_write(codec, WM8900_REG_RDAC_DV,
-- wm8900_read(codec, WM8900_REG_RDAC_DV) | 0x100);
-- wm8900_write(codec, WM8900_REG_LADC_DV,
-- wm8900_read(codec, WM8900_REG_LADC_DV) | 0x100);
-- wm8900_write(codec, WM8900_REG_RADC_DV,
-- wm8900_read(codec, WM8900_REG_RADC_DV) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_LINVOL,
-+ snd_soc_read(codec, WM8900_REG_LINVOL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_RINVOL,
-+ snd_soc_read(codec, WM8900_REG_RINVOL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_LOUT1CTL,
-+ snd_soc_read(codec, WM8900_REG_LOUT1CTL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_ROUT1CTL,
-+ snd_soc_read(codec, WM8900_REG_ROUT1CTL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_LOUT2CTL,
-+ snd_soc_read(codec, WM8900_REG_LOUT2CTL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_ROUT2CTL,
-+ snd_soc_read(codec, WM8900_REG_ROUT2CTL) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_LDAC_DV,
-+ snd_soc_read(codec, WM8900_REG_LDAC_DV) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_RDAC_DV,
-+ snd_soc_read(codec, WM8900_REG_RDAC_DV) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_LADC_DV,
-+ snd_soc_read(codec, WM8900_REG_LADC_DV) | 0x100);
-+ snd_soc_write(codec, WM8900_REG_RADC_DV,
-+ snd_soc_read(codec, WM8900_REG_RADC_DV) | 0x100);
-
- /* Set the DAC and mixer output bias */
-- wm8900_write(codec, WM8900_REG_OUTBIASCTL, 0x81);
-+ snd_soc_write(codec, WM8900_REG_OUTBIASCTL, 0x81);
-
- wm8900_dai.dev = &i2c->dev;
-
-@@ -1388,6 +1312,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8900_i2c_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&client->dev);
-+}
-+
-+static int wm8900_i2c_resume(struct i2c_client *client)
-+{
-+ return snd_soc_resume_device(&client->dev);
-+}
-+#else
-+#define wm8900_i2c_suspend NULL
-+#define wm8900_i2c_resume NULL
-+#endif
-+
- static const struct i2c_device_id wm8900_i2c_id[] = {
- { "wm8900", 0 },
- { }
-@@ -1401,6 +1340,8 @@
- },
- .probe = wm8900_i2c_probe,
- .remove = __devexit_p(wm8900_i2c_remove),
-+ .suspend = wm8900_i2c_suspend,
-+ .resume = wm8900_i2c_resume,
- .id_table = wm8900_i2c_id,
- };
-
-Index: linux-2.6.30/sound/soc/codecs/wm8903.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8903.c 2011-02-01 16:39:20.000000000 +0100
-+++ linux-2.6.30/sound/soc/codecs/wm8903.c 2011-02-01 16:40:30.189047317 +0100
-@@ -217,7 +217,6 @@
- int sysclk;
-
- /* Reference counts */
-- int charge_pump_users;
- int class_w_users;
- int playback_active;
- int capture_active;
-@@ -226,94 +225,18 @@
- struct snd_pcm_substream *slave_substream;
- };
-
--
--static unsigned int wm8903_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
--
-- BUG_ON(reg >= ARRAY_SIZE(wm8903_reg_defaults));
--
-- return cache[reg];
--}
--
--static unsigned int wm8903_hw_read(struct snd_soc_codec *codec, u8 reg)
--{
-- struct i2c_msg xfer[2];
-- u16 data;
-- int ret;
-- struct i2c_client *client = codec->control_data;
--
-- /* Write register */
-- xfer[0].addr = client->addr;
-- xfer[0].flags = 0;
-- xfer[0].len = 1;
-- xfer[0].buf = ®
--
-- /* Read data */
-- xfer[1].addr = client->addr;
-- xfer[1].flags = I2C_M_RD;
-- xfer[1].len = 2;
-- xfer[1].buf = (u8 *)&data;
--
-- ret = i2c_transfer(client->adapter, xfer, 2);
-- if (ret != 2) {
-- pr_err("i2c_transfer returned %d\n", ret);
-- return 0;
-- }
--
-- return (data >> 8) | ((data & 0xff) << 8);
--}
--
--static unsigned int wm8903_read(struct snd_soc_codec *codec,
-- unsigned int reg)
-+static int wm8903_volatile_register(unsigned int reg)
- {
- switch (reg) {
- case WM8903_SW_RESET_AND_ID:
- case WM8903_REVISION_NUMBER:
- case WM8903_INTERRUPT_STATUS_1:
- case WM8903_WRITE_SEQUENCER_4:
-- return wm8903_hw_read(codec, reg);
--
-- default:
-- return wm8903_read_reg_cache(codec, reg);
-- }
--}
--
--static void wm8903_write_reg_cache(struct snd_soc_codec *codec,
-- u16 reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
--
-- BUG_ON(reg >= ARRAY_SIZE(wm8903_reg_defaults));
--
-- switch (reg) {
-- case WM8903_SW_RESET_AND_ID:
-- case WM8903_REVISION_NUMBER:
-- break;
-+ return 1;
-
- default:
-- cache[reg] = value;
-- break;
-- }
--}
--
--static int wm8903_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[3];
--
-- wm8903_write_reg_cache(codec, reg, value);
--
-- /* Data format is 1 byte of address followed by 2 bytes of data */
-- data[0] = reg;
-- data[1] = (value >> 8) & 0xff;
-- data[2] = value & 0xff;
--
-- if (codec->hw_write(codec->control_data, data, 3) == 2)
- return 0;
-- else
-- return -EIO;
-+ }
- }
-
- static int wm8903_run_sequence(struct snd_soc_codec *codec, unsigned int start)
-@@ -324,13 +247,13 @@
- BUG_ON(start > 48);
-
- /* Enable the sequencer */
-- reg[0] = wm8903_read(codec, WM8903_WRITE_SEQUENCER_0);
-+ reg[0] = snd_soc_read(codec, WM8903_WRITE_SEQUENCER_0);
- reg[0] |= WM8903_WSEQ_ENA;
-- wm8903_write(codec, WM8903_WRITE_SEQUENCER_0, reg[0]);
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_0, reg[0]);
-
- dev_dbg(&i2c->dev, "Starting sequence at %d\n", start);
-
-- wm8903_write(codec, WM8903_WRITE_SEQUENCER_3,
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_3,
- start | WM8903_WSEQ_START);
-
- /* Wait for it to complete. If we have the interrupt wired up then
-@@ -340,13 +263,13 @@
- do {
- msleep(10);
-
-- reg[4] = wm8903_read(codec, WM8903_WRITE_SEQUENCER_4);
-+ reg[4] = snd_soc_read(codec, WM8903_WRITE_SEQUENCER_4);
- } while (reg[4] & WM8903_WSEQ_BUSY);
-
- dev_dbg(&i2c->dev, "Sequence complete\n");
-
- /* Disable the sequencer again */
-- wm8903_write(codec, WM8903_WRITE_SEQUENCER_0,
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_0,
- reg[0] & ~WM8903_WSEQ_ENA);
-
- return 0;
-@@ -358,12 +281,12 @@
-
- /* There really ought to be something better we can do here :/ */
- for (i = 0; i < ARRAY_SIZE(wm8903_reg_defaults); i++)
-- cache[i] = wm8903_hw_read(codec, i);
-+ cache[i] = codec->hw_read(codec, i);
- }
-
- static void wm8903_reset(struct snd_soc_codec *codec)
- {
-- wm8903_write(codec, WM8903_SW_RESET_AND_ID, 0);
-+ snd_soc_write(codec, WM8903_SW_RESET_AND_ID, 0);
- memcpy(codec->reg_cache, wm8903_reg_defaults,
- sizeof(wm8903_reg_defaults));
- }
-@@ -373,6 +296,15 @@
- #define WM8903_OUTPUT_INT 0x2
- #define WM8903_OUTPUT_IN 0x1
-
-+static int wm8903_cp_event(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ WARN_ON(event != SND_SOC_DAPM_POST_PMU);
-+ mdelay(4);
-+
-+ return 0;
-+}
-+
- /*
- * Event for headphone and line out amplifier power changes. Special
- * power up/down sequences are required in order to maximise pop/click
-@@ -382,19 +314,20 @@
- struct snd_kcontrol *kcontrol, int event)
- {
- struct snd_soc_codec *codec = w->codec;
-- struct wm8903_priv *wm8903 = codec->private_data;
-- struct i2c_client *i2c = codec->control_data;
- u16 val;
- u16 reg;
-+ u16 dcs_reg;
-+ u16 dcs_bit;
- int shift;
-- u16 cp_reg = wm8903_read(codec, WM8903_CHARGE_PUMP_0);
-
- switch (w->reg) {
- case WM8903_POWER_MANAGEMENT_2:
- reg = WM8903_ANALOGUE_HP_0;
-+ dcs_bit = 0 + w->shift;
- break;
- case WM8903_POWER_MANAGEMENT_3:
- reg = WM8903_ANALOGUE_LINEOUT_0;
-+ dcs_bit = 2 + w->shift;
- break;
- default:
- BUG();
-@@ -414,67 +347,52 @@
- }
-
- if (event & SND_SOC_DAPM_PRE_PMU) {
-- val = wm8903_read(codec, reg);
-+ val = snd_soc_read(codec, reg);
-
- /* Short the output */
- val &= ~(WM8903_OUTPUT_SHORT << shift);
-- wm8903_write(codec, reg, val);
--
-- wm8903->charge_pump_users++;
--
-- dev_dbg(&i2c->dev, "Charge pump use count now %d\n",
-- wm8903->charge_pump_users);
--
-- if (wm8903->charge_pump_users == 1) {
-- dev_dbg(&i2c->dev, "Enabling charge pump\n");
-- wm8903_write(codec, WM8903_CHARGE_PUMP_0,
-- cp_reg | WM8903_CP_ENA);
-- mdelay(4);
-- }
-+ snd_soc_write(codec, reg, val);
- }
-
- if (event & SND_SOC_DAPM_POST_PMU) {
-- val = wm8903_read(codec, reg);
-+ val = snd_soc_read(codec, reg);
-
- val |= (WM8903_OUTPUT_IN << shift);
-- wm8903_write(codec, reg, val);
-+ snd_soc_write(codec, reg, val);
-
- val |= (WM8903_OUTPUT_INT << shift);
-- wm8903_write(codec, reg, val);
-+ snd_soc_write(codec, reg, val);
-
- /* Turn on the output ENA_OUTP */
- val |= (WM8903_OUTPUT_OUT << shift);
-- wm8903_write(codec, reg, val);
-+ snd_soc_write(codec, reg, val);
-+
-+ /* Enable the DC servo */
-+ dcs_reg = snd_soc_read(codec, WM8903_DC_SERVO_0);
-+ dcs_reg |= dcs_bit;
-+ snd_soc_write(codec, WM8903_DC_SERVO_0, dcs_reg);
-
- /* Remove the short */
- val |= (WM8903_OUTPUT_SHORT << shift);
-- wm8903_write(codec, reg, val);
-+ snd_soc_write(codec, reg, val);
- }
-
- if (event & SND_SOC_DAPM_PRE_PMD) {
-- val = wm8903_read(codec, reg);
-+ val = snd_soc_read(codec, reg);
-
- /* Short the output */
- val &= ~(WM8903_OUTPUT_SHORT << shift);
-- wm8903_write(codec, reg, val);
-+ snd_soc_write(codec, reg, val);
-+
-+ /* Disable the DC servo */
-+ dcs_reg = snd_soc_read(codec, WM8903_DC_SERVO_0);
-+ dcs_reg &= ~dcs_bit;
-+ snd_soc_write(codec, WM8903_DC_SERVO_0, dcs_reg);
-
- /* Then disable the intermediate and output stages */
- val &= ~((WM8903_OUTPUT_OUT | WM8903_OUTPUT_INT |
- WM8903_OUTPUT_IN) << shift);
-- wm8903_write(codec, reg, val);
-- }
--
-- if (event & SND_SOC_DAPM_POST_PMD) {
-- wm8903->charge_pump_users--;
--
-- dev_dbg(&i2c->dev, "Charge pump use count now %d\n",
-- wm8903->charge_pump_users);
--
-- if (wm8903->charge_pump_users == 0) {
-- dev_dbg(&i2c->dev, "Disabling charge pump\n");
-- wm8903_write(codec, WM8903_CHARGE_PUMP_0,
-- cp_reg & ~WM8903_CP_ENA);
-- }
-+ snd_soc_write(codec, reg, val);
- }
-
- return 0;
-@@ -498,13 +416,13 @@
- u16 reg;
- int ret;
-
-- reg = wm8903_read(codec, WM8903_CLASS_W_0);
-+ reg = snd_soc_read(codec, WM8903_CLASS_W_0);
-
- /* Turn it off if we're about to enable bypass */
- if (ucontrol->value.integer.value[0]) {
- if (wm8903->class_w_users == 0) {
- dev_dbg(&i2c->dev, "Disabling Class W\n");
-- wm8903_write(codec, WM8903_CLASS_W_0, reg &
-+ snd_soc_write(codec, WM8903_CLASS_W_0, reg &
- ~(WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V));
- }
- wm8903->class_w_users++;
-@@ -517,7 +435,7 @@
- if (!ucontrol->value.integer.value[0]) {
- if (wm8903->class_w_users == 1) {
- dev_dbg(&i2c->dev, "Enabling Class W\n");
-- wm8903_write(codec, WM8903_CLASS_W_0, reg |
-+ snd_soc_write(codec, WM8903_CLASS_W_0, reg |
- WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V);
- }
- wm8903->class_w_users--;
-@@ -539,6 +457,7 @@
- /* ALSA can only do steps of .01dB */
- static const DECLARE_TLV_DB_SCALE(digital_tlv, -7200, 75, 1);
-
-+static const DECLARE_TLV_DB_SCALE(digital_sidetone_tlv, -3600, 300, 0);
- static const DECLARE_TLV_DB_SCALE(out_tlv, -5700, 100, 0);
-
- static const DECLARE_TLV_DB_SCALE(drc_tlv_thresh, 0, 75, 0);
-@@ -657,6 +576,16 @@
- SOC_ENUM_SINGLE(WM8903_ANALOGUE_RIGHT_INPUT_1, 4, 3, rinput_mux_text);
-
-
-+static const char *sidetone_text[] = {
-+ "None", "Left", "Right"
-+};
-+
-+static const struct soc_enum lsidetone_enum =
-+ SOC_ENUM_SINGLE(WM8903_DAC_DIGITAL_0, 2, 3, sidetone_text);
-+
-+static const struct soc_enum rsidetone_enum =
-+ SOC_ENUM_SINGLE(WM8903_DAC_DIGITAL_0, 0, 3, sidetone_text);
-+
- static const struct snd_kcontrol_new wm8903_snd_controls[] = {
-
- /* Input PGAs - No TLV since the scale depends on PGA mode */
-@@ -700,6 +629,9 @@
- SOC_ENUM("ADC Companding Mode", adc_companding),
- SOC_SINGLE("ADC Companding Switch", WM8903_AUDIO_INTERFACE_0, 3, 1, 0),
-
-+SOC_DOUBLE_TLV("Digital Sidetone Volume", WM8903_DAC_DIGITAL_0, 4, 8,
-+ 12, 0, digital_sidetone_tlv),
-+
- /* DAC */
- SOC_DOUBLE_R_TLV("Digital Playback Volume", WM8903_DAC_DIGITAL_VOLUME_LEFT,
- WM8903_DAC_DIGITAL_VOLUME_RIGHT, 1, 120, 0, digital_tlv),
-@@ -707,8 +639,6 @@
- SOC_ENUM("DAC Mute Mode", mute_mode),
- SOC_SINGLE("DAC Mono Switch", WM8903_DAC_DIGITAL_1, 12, 1, 0),
- SOC_ENUM("DAC De-emphasis", dac_deemphasis),
--SOC_SINGLE("DAC Sloping Stopband Filter Switch",
-- WM8903_DAC_DIGITAL_1, 11, 1, 0),
- SOC_ENUM("DAC Companding Mode", dac_companding),
- SOC_SINGLE("DAC Companding Switch", WM8903_AUDIO_INTERFACE_0, 1, 1, 0),
-
-@@ -762,6 +692,12 @@
- static const struct snd_kcontrol_new rinput_inv_mux =
- SOC_DAPM_ENUM("Right Inverting Input Mux", rinput_inv_enum);
-
-+static const struct snd_kcontrol_new lsidetone_mux =
-+ SOC_DAPM_ENUM("DACL Sidetone Mux", lsidetone_enum);
-+
-+static const struct snd_kcontrol_new rsidetone_mux =
-+ SOC_DAPM_ENUM("DACR Sidetone Mux", rsidetone_enum);
-+
- static const struct snd_kcontrol_new left_output_mixer[] = {
- SOC_DAPM_SINGLE("DACL Switch", WM8903_ANALOGUE_LEFT_MIX_0, 3, 1, 0),
- SOC_DAPM_SINGLE("DACR Switch", WM8903_ANALOGUE_LEFT_MIX_0, 2, 1, 0),
-@@ -828,6 +764,9 @@
- SND_SOC_DAPM_ADC("ADCL", "Left HiFi Capture", WM8903_POWER_MANAGEMENT_6, 1, 0),
- SND_SOC_DAPM_ADC("ADCR", "Right HiFi Capture", WM8903_POWER_MANAGEMENT_6, 0, 0),
-
-+SND_SOC_DAPM_MUX("DACL Sidetone", SND_SOC_NOPM, 0, 0, &lsidetone_mux),
-+SND_SOC_DAPM_MUX("DACR Sidetone", SND_SOC_NOPM, 0, 0, &rsidetone_mux),
-+
- SND_SOC_DAPM_DAC("DACL", "Left Playback", WM8903_POWER_MANAGEMENT_6, 3, 0),
- SND_SOC_DAPM_DAC("DACR", "Right Playback", WM8903_POWER_MANAGEMENT_6, 2, 0),
-
-@@ -844,26 +783,29 @@
- SND_SOC_DAPM_PGA_E("Left Headphone Output PGA", WM8903_POWER_MANAGEMENT_2,
- 1, 0, NULL, 0, wm8903_output_event,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-- SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_PGA_E("Right Headphone Output PGA", WM8903_POWER_MANAGEMENT_2,
- 0, 0, NULL, 0, wm8903_output_event,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-- SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_PRE_PMD),
-
- SND_SOC_DAPM_PGA_E("Left Line Output PGA", WM8903_POWER_MANAGEMENT_3, 1, 0,
- NULL, 0, wm8903_output_event,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-- SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_PGA_E("Right Line Output PGA", WM8903_POWER_MANAGEMENT_3, 0, 0,
- NULL, 0, wm8903_output_event,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
-- SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD),
-+ SND_SOC_DAPM_PRE_PMD),
-
- SND_SOC_DAPM_PGA("Left Speaker PGA", WM8903_POWER_MANAGEMENT_5, 1, 0,
- NULL, 0),
- SND_SOC_DAPM_PGA("Right Speaker PGA", WM8903_POWER_MANAGEMENT_5, 0, 0,
- NULL, 0),
-
-+SND_SOC_DAPM_SUPPLY("Charge Pump", WM8903_CHARGE_PUMP_0, 0, 0,
-+ wm8903_cp_event, SND_SOC_DAPM_POST_PMU),
-+SND_SOC_DAPM_SUPPLY("CLK_DSP", WM8903_CLOCK_RATES_2, 1, 0, NULL, 0),
- };
-
- static const struct snd_soc_dapm_route intercon[] = {
-@@ -909,7 +851,19 @@
- { "Right Input PGA", NULL, "Right Input Mode Mux" },
-
- { "ADCL", NULL, "Left Input PGA" },
-+ { "ADCL", NULL, "CLK_DSP" },
- { "ADCR", NULL, "Right Input PGA" },
-+ { "ADCR", NULL, "CLK_DSP" },
-+
-+ { "DACL Sidetone", "Left", "ADCL" },
-+ { "DACL Sidetone", "Right", "ADCR" },
-+ { "DACR Sidetone", "Left", "ADCL" },
-+ { "DACR Sidetone", "Right", "ADCR" },
-+
-+ { "DACL", NULL, "DACL Sidetone" },
-+ { "DACL", NULL, "CLK_DSP" },
-+ { "DACR", NULL, "DACR Sidetone" },
-+ { "DACR", NULL, "CLK_DSP" },
-
- { "Left Output Mixer", "Left Bypass Switch", "Left Input PGA" },
- { "Left Output Mixer", "Right Bypass Switch", "Right Input PGA" },
-@@ -951,6 +905,11 @@
-
- { "ROP", NULL, "Right Speaker PGA" },
- { "RON", NULL, "Right Speaker PGA" },
-+
-+ { "Left Headphone Output PGA", NULL, "Charge Pump" },
-+ { "Right Headphone Output PGA", NULL, "Charge Pump" },
-+ { "Left Line Output PGA", NULL, "Charge Pump" },
-+ { "Right Line Output PGA", NULL, "Charge Pump" },
- };
-
- static int wm8903_add_widgets(struct snd_soc_codec *codec)
-@@ -974,50 +933,55 @@
- switch (level) {
- case SND_SOC_BIAS_ON:
- case SND_SOC_BIAS_PREPARE:
-- reg = wm8903_read(codec, WM8903_VMID_CONTROL_0);
-+ reg = snd_soc_read(codec, WM8903_VMID_CONTROL_0);
- reg &= ~(WM8903_VMID_RES_MASK);
- reg |= WM8903_VMID_RES_50K;
-- wm8903_write(codec, WM8903_VMID_CONTROL_0, reg);
-+ snd_soc_write(codec, WM8903_VMID_CONTROL_0, reg);
- break;
-
- case SND_SOC_BIAS_STANDBY:
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
-- wm8903_write(codec, WM8903_CLOCK_RATES_2,
-+ snd_soc_write(codec, WM8903_CLOCK_RATES_2,
- WM8903_CLK_SYS_ENA);
-
-+ /* Change DC servo dither level in startup sequence */
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_0, 0x11);
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_1, 0x1257);
-+ snd_soc_write(codec, WM8903_WRITE_SEQUENCER_2, 0x2);
-+
- wm8903_run_sequence(codec, 0);
- wm8903_sync_reg_cache(codec, codec->reg_cache);
-
- /* Enable low impedence charge pump output */
-- reg = wm8903_read(codec,
-+ reg = snd_soc_read(codec,
- WM8903_CONTROL_INTERFACE_TEST_1);
-- wm8903_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
-+ snd_soc_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
- reg | WM8903_TEST_KEY);
-- reg2 = wm8903_read(codec, WM8903_CHARGE_PUMP_TEST_1);
-- wm8903_write(codec, WM8903_CHARGE_PUMP_TEST_1,
-+ reg2 = snd_soc_read(codec, WM8903_CHARGE_PUMP_TEST_1);
-+ snd_soc_write(codec, WM8903_CHARGE_PUMP_TEST_1,
- reg2 | WM8903_CP_SW_KELVIN_MODE_MASK);
-- wm8903_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
-+ snd_soc_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
- reg);
-
- /* By default no bypass paths are enabled so
- * enable Class W support.
- */
- dev_dbg(&i2c->dev, "Enabling Class W\n");
-- wm8903_write(codec, WM8903_CLASS_W_0, reg |
-+ snd_soc_write(codec, WM8903_CLASS_W_0, reg |
- WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V);
- }
-
-- reg = wm8903_read(codec, WM8903_VMID_CONTROL_0);
-+ reg = snd_soc_read(codec, WM8903_VMID_CONTROL_0);
- reg &= ~(WM8903_VMID_RES_MASK);
- reg |= WM8903_VMID_RES_250K;
-- wm8903_write(codec, WM8903_VMID_CONTROL_0, reg);
-+ snd_soc_write(codec, WM8903_VMID_CONTROL_0, reg);
- break;
-
- case SND_SOC_BIAS_OFF:
- wm8903_run_sequence(codec, 32);
-- reg = wm8903_read(codec, WM8903_CLOCK_RATES_2);
-+ reg = snd_soc_read(codec, WM8903_CLOCK_RATES_2);
- reg &= ~WM8903_CLK_SYS_ENA;
-- wm8903_write(codec, WM8903_CLOCK_RATES_2, reg);
-+ snd_soc_write(codec, WM8903_CLOCK_RATES_2, reg);
- break;
- }
-
-@@ -1041,7 +1005,7 @@
- unsigned int fmt)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
-- u16 aif1 = wm8903_read(codec, WM8903_AUDIO_INTERFACE_1);
-+ u16 aif1 = snd_soc_read(codec, WM8903_AUDIO_INTERFACE_1);
-
- aif1 &= ~(WM8903_LRCLK_DIR | WM8903_BCLK_DIR | WM8903_AIF_FMT_MASK |
- WM8903_AIF_LRCLK_INV | WM8903_AIF_BCLK_INV);
-@@ -1119,7 +1083,7 @@
- return -EINVAL;
- }
-
-- wm8903_write(codec, WM8903_AUDIO_INTERFACE_1, aif1);
-+ snd_soc_write(codec, WM8903_AUDIO_INTERFACE_1, aif1);
-
- return 0;
- }
-@@ -1129,14 +1093,14 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- u16 reg;
-
-- reg = wm8903_read(codec, WM8903_DAC_DIGITAL_1);
-+ reg = snd_soc_read(codec, WM8903_DAC_DIGITAL_1);
-
- if (mute)
- reg |= WM8903_DAC_MUTE;
- else
- reg &= ~WM8903_DAC_MUTE;
-
-- wm8903_write(codec, WM8903_DAC_DIGITAL_1, reg);
-+ snd_soc_write(codec, WM8903_DAC_DIGITAL_1, reg);
-
- return 0;
- }
-@@ -1273,14 +1237,8 @@
- if (wm8903->master_substream) {
- master_runtime = wm8903->master_substream->runtime;
-
-- dev_dbg(&i2c->dev, "Constraining to %d bits at %dHz\n",
-- master_runtime->sample_bits,
-- master_runtime->rate);
--
-- snd_pcm_hw_constraint_minmax(substream->runtime,
-- SNDRV_PCM_HW_PARAM_RATE,
-- master_runtime->rate,
-- master_runtime->rate);
-+ dev_dbg(&i2c->dev, "Constraining to %d bits\n",
-+ master_runtime->sample_bits);
-
- snd_pcm_hw_constraint_minmax(substream->runtime,
- SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-@@ -1332,17 +1290,24 @@
- int cur_val;
- int clk_sys;
-
-- u16 aif1 = wm8903_read(codec, WM8903_AUDIO_INTERFACE_1);
-- u16 aif2 = wm8903_read(codec, WM8903_AUDIO_INTERFACE_2);
-- u16 aif3 = wm8903_read(codec, WM8903_AUDIO_INTERFACE_3);
-- u16 clock0 = wm8903_read(codec, WM8903_CLOCK_RATES_0);
-- u16 clock1 = wm8903_read(codec, WM8903_CLOCK_RATES_1);
-+ u16 aif1 = snd_soc_read(codec, WM8903_AUDIO_INTERFACE_1);
-+ u16 aif2 = snd_soc_read(codec, WM8903_AUDIO_INTERFACE_2);
-+ u16 aif3 = snd_soc_read(codec, WM8903_AUDIO_INTERFACE_3);
-+ u16 clock0 = snd_soc_read(codec, WM8903_CLOCK_RATES_0);
-+ u16 clock1 = snd_soc_read(codec, WM8903_CLOCK_RATES_1);
-+ u16 dac_digital1 = snd_soc_read(codec, WM8903_DAC_DIGITAL_1);
-
- if (substream == wm8903->slave_substream) {
- dev_dbg(&i2c->dev, "Ignoring hw_params for slave substream\n");
- return 0;
- }
-
-+ /* Enable sloping stopband filter for low sample rates */
-+ if (fs <= 24000)
-+ dac_digital1 |= WM8903_DAC_SB_FILT;
-+ else
-+ dac_digital1 &= ~WM8903_DAC_SB_FILT;
-+
- /* Configure sample rate logic for DSP - choose nearest rate */
- dsp_config = 0;
- best_val = abs(sample_rates[dsp_config].rate - fs);
-@@ -1462,11 +1427,12 @@
- aif2 |= bclk_divs[bclk_div].div;
- aif3 |= bclk / fs;
-
-- wm8903_write(codec, WM8903_CLOCK_RATES_0, clock0);
-- wm8903_write(codec, WM8903_CLOCK_RATES_1, clock1);
-- wm8903_write(codec, WM8903_AUDIO_INTERFACE_1, aif1);
-- wm8903_write(codec, WM8903_AUDIO_INTERFACE_2, aif2);
-- wm8903_write(codec, WM8903_AUDIO_INTERFACE_3, aif3);
-+ snd_soc_write(codec, WM8903_CLOCK_RATES_0, clock0);
-+ snd_soc_write(codec, WM8903_CLOCK_RATES_1, clock1);
-+ snd_soc_write(codec, WM8903_AUDIO_INTERFACE_1, aif1);
-+ snd_soc_write(codec, WM8903_AUDIO_INTERFACE_2, aif2);
-+ snd_soc_write(codec, WM8903_AUDIO_INTERFACE_3, aif3);
-+ snd_soc_write(codec, WM8903_DAC_DIGITAL_1, dac_digital1);
-
- return 0;
- }
-@@ -1519,6 +1485,7 @@
- .formats = WM8903_FORMATS,
- },
- .ops = &wm8903_dai_ops,
-+ .symmetric_rates = 1,
- };
- EXPORT_SYMBOL_GPL(wm8903_dai);
-
-@@ -1550,7 +1517,7 @@
- if (tmp_cache) {
- for (i = 2; i < ARRAY_SIZE(wm8903_reg_defaults); i++)
- if (tmp_cache[i] != reg_cache[i])
-- wm8903_write(codec, i, tmp_cache[i]);
-+ snd_soc_write(codec, i, tmp_cache[i]);
- } else {
- dev_err(&i2c->dev, "Failed to allocate temporary cache\n");
- }
-@@ -1581,9 +1548,6 @@
- codec->dev = &i2c->dev;
- codec->name = "WM8903";
- codec->owner = THIS_MODULE;
-- codec->read = wm8903_read;
-- codec->write = wm8903_write;
-- codec->hw_write = (hw_write_t)i2c_master_send;
- codec->bias_level = SND_SOC_BIAS_OFF;
- codec->set_bias_level = wm8903_set_bias_level;
- codec->dai = &wm8903_dai;
-@@ -1591,18 +1555,25 @@
- codec->reg_cache_size = ARRAY_SIZE(wm8903->reg_cache);
- codec->reg_cache = &wm8903->reg_cache[0];
- codec->private_data = wm8903;
-+ codec->volatile_register = wm8903_volatile_register;
-
- i2c_set_clientdata(i2c, codec);
- codec->control_data = i2c;
-
-- val = wm8903_hw_read(codec, WM8903_SW_RESET_AND_ID);
-+ ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
-+ if (ret != 0) {
-+ dev_err(&i2c->dev, "Failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
-+ val = snd_soc_read(codec, WM8903_SW_RESET_AND_ID);
- if (val != wm8903_reg_defaults[WM8903_SW_RESET_AND_ID]) {
- dev_err(&i2c->dev,
- "Device with ID register %x is not a WM8903\n", val);
- return -ENODEV;
- }
-
-- val = wm8903_read(codec, WM8903_REVISION_NUMBER);
-+ val = snd_soc_read(codec, WM8903_REVISION_NUMBER);
- dev_info(&i2c->dev, "WM8903 revision %d\n",
- val & WM8903_CHIP_REV_MASK);
-
-@@ -1612,35 +1583,35 @@
- wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
- /* Latch volume update bits */
-- val = wm8903_read(codec, WM8903_ADC_DIGITAL_VOLUME_LEFT);
-+ val = snd_soc_read(codec, WM8903_ADC_DIGITAL_VOLUME_LEFT);
- val |= WM8903_ADCVU;
-- wm8903_write(codec, WM8903_ADC_DIGITAL_VOLUME_LEFT, val);
-- wm8903_write(codec, WM8903_ADC_DIGITAL_VOLUME_RIGHT, val);
-+ snd_soc_write(codec, WM8903_ADC_DIGITAL_VOLUME_LEFT, val);
-+ snd_soc_write(codec, WM8903_ADC_DIGITAL_VOLUME_RIGHT, val);
-
-- val = wm8903_read(codec, WM8903_DAC_DIGITAL_VOLUME_LEFT);
-+ val = snd_soc_read(codec, WM8903_DAC_DIGITAL_VOLUME_LEFT);
- val |= WM8903_DACVU;
-- wm8903_write(codec, WM8903_DAC_DIGITAL_VOLUME_LEFT, val);
-- wm8903_write(codec, WM8903_DAC_DIGITAL_VOLUME_RIGHT, val);
-+ snd_soc_write(codec, WM8903_DAC_DIGITAL_VOLUME_LEFT, val);
-+ snd_soc_write(codec, WM8903_DAC_DIGITAL_VOLUME_RIGHT, val);
-
-- val = wm8903_read(codec, WM8903_ANALOGUE_OUT1_LEFT);
-+ val = snd_soc_read(codec, WM8903_ANALOGUE_OUT1_LEFT);
- val |= WM8903_HPOUTVU;
-- wm8903_write(codec, WM8903_ANALOGUE_OUT1_LEFT, val);
-- wm8903_write(codec, WM8903_ANALOGUE_OUT1_RIGHT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT1_LEFT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT1_RIGHT, val);
-
-- val = wm8903_read(codec, WM8903_ANALOGUE_OUT2_LEFT);
-+ val = snd_soc_read(codec, WM8903_ANALOGUE_OUT2_LEFT);
- val |= WM8903_LINEOUTVU;
-- wm8903_write(codec, WM8903_ANALOGUE_OUT2_LEFT, val);
-- wm8903_write(codec, WM8903_ANALOGUE_OUT2_RIGHT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT2_LEFT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT2_RIGHT, val);
-
-- val = wm8903_read(codec, WM8903_ANALOGUE_OUT3_LEFT);
-+ val = snd_soc_read(codec, WM8903_ANALOGUE_OUT3_LEFT);
- val |= WM8903_SPKVU;
-- wm8903_write(codec, WM8903_ANALOGUE_OUT3_LEFT, val);
-- wm8903_write(codec, WM8903_ANALOGUE_OUT3_RIGHT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT3_LEFT, val);
-+ snd_soc_write(codec, WM8903_ANALOGUE_OUT3_RIGHT, val);
-
- /* Enable DAC soft mute by default */
-- val = wm8903_read(codec, WM8903_DAC_DIGITAL_1);
-+ val = snd_soc_read(codec, WM8903_DAC_DIGITAL_1);
- val |= WM8903_DAC_MUTEMODE;
-- wm8903_write(codec, WM8903_DAC_DIGITAL_1, val);
-+ snd_soc_write(codec, WM8903_DAC_DIGITAL_1, val);
-
- wm8903_dai.dev = &i2c->dev;
- wm8903_codec = codec;
-@@ -1684,6 +1655,21 @@
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int wm8903_i2c_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ return snd_soc_suspend_device(&client->dev);
-+}
-+
-+static int wm8903_i2c_resume(struct i2c_client *client)
-+{
-+ return snd_soc_resume_device(&client->dev);
-+}
-+#else
-+#define wm8903_i2c_suspend NULL
-+#define wm8903_i2c_resume NULL
-+#endif
-+
- /* i2c codec control layer */
- static const struct i2c_device_id wm8903_i2c_id[] = {
- { "wm8903", 0 },
-@@ -1698,6 +1684,8 @@
- },
- .probe = wm8903_i2c_probe,
- .remove = __devexit_p(wm8903_i2c_remove),
-+ .suspend = wm8903_i2c_suspend,
-+ .resume = wm8903_i2c_resume,
- .id_table = wm8903_i2c_id,
- };
-
-Index: linux-2.6.30/sound/soc/codecs/wm8971.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8971.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8971.c 2011-02-01 16:40:30.189047317 +0100
-@@ -59,44 +59,7 @@
- 0x0079, 0x0079, 0x0079, /* 40 */
- };
-
--static inline unsigned int wm8971_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg < WM8971_REG_COUNT)
-- return cache[reg];
--
-- return -1;
--}
--
--static inline void wm8971_write_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
-- if (reg < WM8971_REG_COUNT)
-- cache[reg] = value;
--}
--
--static int wm8971_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[2];
--
-- /* data is
-- * D15..D9 WM8753 register offset
-- * D8...D0 register data
-- */
-- data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-- data[1] = value & 0x00ff;
--
-- wm8971_write_reg_cache (codec, reg, value);
-- if (codec->hw_write(codec->control_data, data, 2) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--#define wm8971_reset(c) wm8971_write(c, WM8971_RESET, 0)
-+#define wm8971_reset(c) snd_soc_write(c, WM8971_RESET, 0)
-
- /* WM8971 Controls */
- static const char *wm8971_bass[] = { "Linear Control", "Adaptive Boost" };
-@@ -521,7 +484,7 @@
- return -EINVAL;
- }
-
-- wm8971_write(codec, WM8971_IFACE, iface);
-+ snd_soc_write(codec, WM8971_IFACE, iface);
- return 0;
- }
-
-@@ -533,8 +496,8 @@
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- struct wm8971_priv *wm8971 = codec->private_data;
-- u16 iface = wm8971_read_reg_cache(codec, WM8971_IFACE) & 0x1f3;
-- u16 srate = wm8971_read_reg_cache(codec, WM8971_SRATE) & 0x1c0;
-+ u16 iface = snd_soc_read(codec, WM8971_IFACE) & 0x1f3;
-+ u16 srate = snd_soc_read(codec, WM8971_SRATE) & 0x1c0;
- int coeff = get_coeff(wm8971->sysclk, params_rate(params));
-
- /* bit size */
-@@ -553,9 +516,9 @@
- }
-
- /* set iface & srate */
-- wm8971_write(codec, WM8971_IFACE, iface);
-+ snd_soc_write(codec, WM8971_IFACE, iface);
- if (coeff >= 0)
-- wm8971_write(codec, WM8971_SRATE, srate |
-+ snd_soc_write(codec, WM8971_SRATE, srate |
- (coeff_div[coeff].sr << 1) | coeff_div[coeff].usb);
-
- return 0;
-@@ -564,33 +527,33 @@
- static int wm8971_mute(struct snd_soc_dai *dai, int mute)
- {
- struct snd_soc_codec *codec = dai->codec;
-- u16 mute_reg = wm8971_read_reg_cache(codec, WM8971_ADCDAC) & 0xfff7;
-+ u16 mute_reg = snd_soc_read(codec, WM8971_ADCDAC) & 0xfff7;
-
- if (mute)
-- wm8971_write(codec, WM8971_ADCDAC, mute_reg | 0x8);
-+ snd_soc_write(codec, WM8971_ADCDAC, mute_reg | 0x8);
- else
-- wm8971_write(codec, WM8971_ADCDAC, mute_reg);
-+ snd_soc_write(codec, WM8971_ADCDAC, mute_reg);
- return 0;
- }
-
- static int wm8971_set_bias_level(struct snd_soc_codec *codec,
- enum snd_soc_bias_level level)
- {
-- u16 pwr_reg = wm8971_read_reg_cache(codec, WM8971_PWR1) & 0xfe3e;
-+ u16 pwr_reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e;
-
- switch (level) {
- case SND_SOC_BIAS_ON:
- /* set vmid to 50k and unmute dac */
-- wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x00c1);
-+ snd_soc_write(codec, WM8971_PWR1, pwr_reg | 0x00c1);
- break;
- case SND_SOC_BIAS_PREPARE:
- break;
- case SND_SOC_BIAS_STANDBY:
- /* mute dac and set vmid to 500k, enable VREF */
-- wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x0140);
-+ snd_soc_write(codec, WM8971_PWR1, pwr_reg | 0x0140);
- break;
- case SND_SOC_BIAS_OFF:
-- wm8971_write(codec, WM8971_PWR1, 0x0001);
-+ snd_soc_write(codec, WM8971_PWR1, 0x0001);
- break;
- }
- codec->bias_level = level;
-@@ -667,8 +630,8 @@
-
- /* charge wm8971 caps */
- if (codec->suspend_bias_level == SND_SOC_BIAS_ON) {
-- reg = wm8971_read_reg_cache(codec, WM8971_PWR1) & 0xfe3e;
-- wm8971_write(codec, WM8971_PWR1, reg | 0x01c0);
-+ reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e;
-+ snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0);
- codec->bias_level = SND_SOC_BIAS_ON;
- queue_delayed_work(wm8971_workq, &codec->delayed_work,
- msecs_to_jiffies(1000));
-@@ -677,15 +640,14 @@
- return 0;
- }
-
--static int wm8971_init(struct snd_soc_device *socdev)
-+static int wm8971_init(struct snd_soc_device *socdev,
-+ enum snd_soc_control_type control)
- {
- struct snd_soc_codec *codec = socdev->card->codec;
- int reg, ret = 0;
-
- codec->name = "WM8971";
- codec->owner = THIS_MODULE;
-- codec->read = wm8971_read_reg_cache;
-- codec->write = wm8971_write;
- codec->set_bias_level = wm8971_set_bias_level;
- codec->dai = &wm8971_dai;
- codec->reg_cache_size = ARRAY_SIZE(wm8971_reg);
-@@ -695,42 +657,48 @@
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-+ ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8971: failed to set cache I/O: %d\n", ret);
-+ goto err;
-+ }
-+
- wm8971_reset(codec);
-
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
- printk(KERN_ERR "wm8971: failed to create pcms\n");
-- goto pcm_err;
-+ goto err;
- }
-
- /* charge output caps - set vmid to 5k for quick power up */
-- reg = wm8971_read_reg_cache(codec, WM8971_PWR1) & 0xfe3e;
-- wm8971_write(codec, WM8971_PWR1, reg | 0x01c0);
-+ reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e;
-+ snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0);
- codec->bias_level = SND_SOC_BIAS_STANDBY;
- queue_delayed_work(wm8971_workq, &codec->delayed_work,
- msecs_to_jiffies(1000));
-
- /* set the update bits */
-- reg = wm8971_read_reg_cache(codec, WM8971_LDAC);
-- wm8971_write(codec, WM8971_LDAC, reg | 0x0100);
-- reg = wm8971_read_reg_cache(codec, WM8971_RDAC);
-- wm8971_write(codec, WM8971_RDAC, reg | 0x0100);
--
-- reg = wm8971_read_reg_cache(codec, WM8971_LOUT1V);
-- wm8971_write(codec, WM8971_LOUT1V, reg | 0x0100);
-- reg = wm8971_read_reg_cache(codec, WM8971_ROUT1V);
-- wm8971_write(codec, WM8971_ROUT1V, reg | 0x0100);
--
-- reg = wm8971_read_reg_cache(codec, WM8971_LOUT2V);
-- wm8971_write(codec, WM8971_LOUT2V, reg | 0x0100);
-- reg = wm8971_read_reg_cache(codec, WM8971_ROUT2V);
-- wm8971_write(codec, WM8971_ROUT2V, reg | 0x0100);
--
-- reg = wm8971_read_reg_cache(codec, WM8971_LINVOL);
-- wm8971_write(codec, WM8971_LINVOL, reg | 0x0100);
-- reg = wm8971_read_reg_cache(codec, WM8971_RINVOL);
-- wm8971_write(codec, WM8971_RINVOL, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8971_LDAC);
-+ snd_soc_write(codec, WM8971_LDAC, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8971_RDAC);
-+ snd_soc_write(codec, WM8971_RDAC, reg | 0x0100);
-+
-+ reg = snd_soc_read(codec, WM8971_LOUT1V);
-+ snd_soc_write(codec, WM8971_LOUT1V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8971_ROUT1V);
-+ snd_soc_write(codec, WM8971_ROUT1V, reg | 0x0100);
-+
-+ reg = snd_soc_read(codec, WM8971_LOUT2V);
-+ snd_soc_write(codec, WM8971_LOUT2V, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8971_ROUT2V);
-+ snd_soc_write(codec, WM8971_ROUT2V, reg | 0x0100);
-+
-+ reg = snd_soc_read(codec, WM8971_LINVOL);
-+ snd_soc_write(codec, WM8971_LINVOL, reg | 0x0100);
-+ reg = snd_soc_read(codec, WM8971_RINVOL);
-+ snd_soc_write(codec, WM8971_RINVOL, reg | 0x0100);
-
- snd_soc_add_controls(codec, wm8971_snd_controls,
- ARRAY_SIZE(wm8971_snd_controls));
-@@ -745,7 +713,7 @@
- card_err:
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
--pcm_err:
-+err:
- kfree(codec->reg_cache);
- return ret;
- }
-@@ -767,7 +735,7 @@
-
- codec->control_data = i2c;
-
-- ret = wm8971_init(socdev);
-+ ret = wm8971_init(socdev, SND_SOC_I2C);
- if (ret < 0)
- pr_err("failed to initialise WM8971\n");
-
-@@ -877,7 +845,6 @@
-
- #if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
-- codec->hw_write = (hw_write_t)i2c_master_send;
- ret = wm8971_add_i2c_device(pdev, setup);
- }
- #endif
-Index: linux-2.6.30/sound/soc/codecs/wm8990.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm8990.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm8990.c 2011-02-01 16:40:30.189047317 +0100
-@@ -108,53 +108,7 @@
- 0x0000, /* R63 - Driver internal */
- };
-
--/*
-- * read wm8990 register cache
-- */
--static inline unsigned int wm8990_read_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg)
--{
-- u16 *cache = codec->reg_cache;
-- BUG_ON(reg >= ARRAY_SIZE(wm8990_reg));
-- return cache[reg];
--}
--
--/*
-- * write wm8990 register cache
-- */
--static inline void wm8990_write_reg_cache(struct snd_soc_codec *codec,
-- unsigned int reg, unsigned int value)
--{
-- u16 *cache = codec->reg_cache;
--
-- /* Reset register and reserved registers are uncached */
-- if (reg == 0 || reg >= ARRAY_SIZE(wm8990_reg))
-- return;
--
-- cache[reg] = value;
--}
--
--/*
-- * write to the wm8990 register space
-- */
--static int wm8990_write(struct snd_soc_codec *codec, unsigned int reg,
-- unsigned int value)
--{
-- u8 data[3];
--
-- data[0] = reg & 0xFF;
-- data[1] = (value >> 8) & 0xFF;
-- data[2] = value & 0xFF;
--
-- wm8990_write_reg_cache(codec, reg, value);
--
-- if (codec->hw_write(codec->control_data, data, 3) == 2)
-- return 0;
-- else
-- return -EIO;
--}
--
--#define wm8990_reset(c) wm8990_write(c, WM8990_RESET, 0)
-+#define wm8990_reset(c) snd_soc_write(c, WM8990_RESET, 0)
-
- static const DECLARE_TLV_DB_LINEAR(rec_mix_tlv, -1500, 600);
-
-@@ -187,8 +141,8 @@
- return ret;
-
- /* now hit the volume update bits (always bit 8) */
-- val = wm8990_read_reg_cache(codec, reg);
-- return wm8990_write(codec, reg, val | 0x0100);
-+ val = snd_soc_read(codec, reg);
-+ return snd_soc_write(codec, reg, val | 0x0100);
- }
-
- #define SOC_WM899X_OUTPGA_SINGLE_R_TLV(xname, reg, shift, max, invert,\
-@@ -427,8 +381,8 @@
- {
- u16 reg, fakepower;
-
-- reg = wm8990_read_reg_cache(w->codec, WM8990_POWER_MANAGEMENT_2);
-- fakepower = wm8990_read_reg_cache(w->codec, WM8990_INTDRIVBITS);
-+ reg = snd_soc_read(w->codec, WM8990_POWER_MANAGEMENT_2);
-+ fakepower = snd_soc_read(w->codec, WM8990_INTDRIVBITS);
-
- if (fakepower & ((1 << WM8990_INMIXL_PWR_BIT) |
- (1 << WM8990_AINLMUX_PWR_BIT))) {
-@@ -443,7 +397,7 @@
- } else {
- reg &= ~WM8990_AINL_ENA;
- }
-- wm8990_write(w->codec, WM8990_POWER_MANAGEMENT_2, reg);
-+ snd_soc_write(w->codec, WM8990_POWER_MANAGEMENT_2, reg);
-
- return 0;
- }
-@@ -457,7 +411,7 @@
-
- switch (reg_shift) {
- case WM8990_SPEAKER_MIXER | (WM8990_LDSPK_BIT << 8) :
-- reg = wm8990_read_reg_cache(w->codec, WM8990_OUTPUT_MIXER1);
-+ reg = snd_soc_read(w->codec, WM8990_OUTPUT_MIXER1);
- if (reg & WM8990_LDLO) {
- printk(KERN_WARNING
- "Cannot set as Output Mixer 1 LDLO Set\n");
-@@ -465,7 +419,7 @@
- }
- break;
- case WM8990_SPEAKER_MIXER | (WM8990_RDSPK_BIT << 8):
-- reg = wm8990_read_reg_cache(w->codec, WM8990_OUTPUT_MIXER2);
-+ reg = snd_soc_read(w->codec, WM8990_OUTPUT_MIXER2);
- if (reg & WM8990_RDRO) {
- printk(KERN_WARNING
- "Cannot set as Output Mixer 2 RDRO Set\n");
-@@ -473,7 +427,7 @@
- }
- break;
- case WM8990_OUTPUT_MIXER1 | (WM8990_LDLO_BIT << 8):
-- reg = wm8990_read_reg_cache(w->codec, WM8990_SPEAKER_MIXER);
-+ reg = snd_soc_read(w->codec, WM8990_SPEAKER_MIXER);
- if (reg & WM8990_LDSPK) {
- printk(KERN_WARNING
- "Cannot set as Speaker Mixer LDSPK Set\n");
-@@ -481,7 +435,7 @@
- }
- break;
- case WM8990_OUTPUT_MIXER2 | (WM8990_RDRO_BIT << 8):
-- reg = wm8990_read_reg_cache(w->codec, WM8990_SPEAKER_MIXER);
-+ reg = snd_soc_read(w->codec, WM8990_SPEAKER_MIXER);
- if (reg & WM8990_RDSPK) {
- printk(KERN_WARNING
- "Cannot set as Speaker Mixer RDSPK Set\n");
-@@ -998,7 +952,7 @@
-
- if ((Ndiv < 6) || (Ndiv > 12))
- printk(KERN_WARNING
-- "WM8990 N value outwith recommended range! N = %d\n", Ndiv);
-+ "WM8990 N value outwith recommended range! N = %u\n", Ndiv);
-
- pll_div->n = Ndiv;
- Nmod = target % source;
-@@ -1018,8 +972,8 @@
- pll_div->k = K;
- }
-
--static int wm8990_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm8990_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- u16 reg;
- struct snd_soc_codec *codec = codec_dai->codec;
-@@ -1029,24 +983,24 @@
- pll_factors(&pll_div, freq_out * 4, freq_in);
-
- /* Turn on PLL */
-- reg = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_2);
-+ reg = snd_soc_read(codec, WM8990_POWER_MANAGEMENT_2);
- reg |= WM8990_PLL_ENA;
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_2, reg);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_2, reg);
-
- /* sysclk comes from PLL */
-- reg = wm8990_read_reg_cache(codec, WM8990_CLOCKING_2);
-- wm8990_write(codec, WM8990_CLOCKING_2, reg | WM8990_SYSCLK_SRC);
-+ reg = snd_soc_read(codec, WM8990_CLOCKING_2);
-+ snd_soc_write(codec, WM8990_CLOCKING_2, reg | WM8990_SYSCLK_SRC);
-
- /* set up N , fractional mode and pre-divisor if neccessary */
-- wm8990_write(codec, WM8990_PLL1, pll_div.n | WM8990_SDM |
-+ snd_soc_write(codec, WM8990_PLL1, pll_div.n | WM8990_SDM |
- (pll_div.div2?WM8990_PRESCALE:0));
-- wm8990_write(codec, WM8990_PLL2, (u8)(pll_div.k>>8));
-- wm8990_write(codec, WM8990_PLL3, (u8)(pll_div.k & 0xFF));
-+ snd_soc_write(codec, WM8990_PLL2, (u8)(pll_div.k>>8));
-+ snd_soc_write(codec, WM8990_PLL3, (u8)(pll_div.k & 0xFF));
- } else {
- /* Turn on PLL */
-- reg = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_2);
-+ reg = snd_soc_read(codec, WM8990_POWER_MANAGEMENT_2);
- reg &= ~WM8990_PLL_ENA;
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_2, reg);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_2, reg);
- }
- return 0;
- }
-@@ -1073,8 +1027,8 @@
- struct snd_soc_codec *codec = codec_dai->codec;
- u16 audio1, audio3;
-
-- audio1 = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_1);
-- audio3 = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_3);
-+ audio1 = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_1);
-+ audio3 = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_3);
-
- /* set master/slave audio interface */
- switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-@@ -1115,8 +1069,8 @@
- return -EINVAL;
- }
-
-- wm8990_write(codec, WM8990_AUDIO_INTERFACE_1, audio1);
-- wm8990_write(codec, WM8990_AUDIO_INTERFACE_3, audio3);
-+ snd_soc_write(codec, WM8990_AUDIO_INTERFACE_1, audio1);
-+ snd_soc_write(codec, WM8990_AUDIO_INTERFACE_3, audio3);
- return 0;
- }
-
-@@ -1128,24 +1082,24 @@
-
- switch (div_id) {
- case WM8990_MCLK_DIV:
-- reg = wm8990_read_reg_cache(codec, WM8990_CLOCKING_2) &
-+ reg = snd_soc_read(codec, WM8990_CLOCKING_2) &
- ~WM8990_MCLK_DIV_MASK;
-- wm8990_write(codec, WM8990_CLOCKING_2, reg | div);
-+ snd_soc_write(codec, WM8990_CLOCKING_2, reg | div);
- break;
- case WM8990_DACCLK_DIV:
-- reg = wm8990_read_reg_cache(codec, WM8990_CLOCKING_2) &
-+ reg = snd_soc_read(codec, WM8990_CLOCKING_2) &
- ~WM8990_DAC_CLKDIV_MASK;
-- wm8990_write(codec, WM8990_CLOCKING_2, reg | div);
-+ snd_soc_write(codec, WM8990_CLOCKING_2, reg | div);
- break;
- case WM8990_ADCCLK_DIV:
-- reg = wm8990_read_reg_cache(codec, WM8990_CLOCKING_2) &
-+ reg = snd_soc_read(codec, WM8990_CLOCKING_2) &
- ~WM8990_ADC_CLKDIV_MASK;
-- wm8990_write(codec, WM8990_CLOCKING_2, reg | div);
-+ snd_soc_write(codec, WM8990_CLOCKING_2, reg | div);
- break;
- case WM8990_BCLK_DIV:
-- reg = wm8990_read_reg_cache(codec, WM8990_CLOCKING_1) &
-+ reg = snd_soc_read(codec, WM8990_CLOCKING_1) &
- ~WM8990_BCLK_DIV_MASK;
-- wm8990_write(codec, WM8990_CLOCKING_1, reg | div);
-+ snd_soc_write(codec, WM8990_CLOCKING_1, reg | div);
- break;
- default:
- return -EINVAL;
-@@ -1164,7 +1118,7 @@
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_device *socdev = rtd->socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
-- u16 audio1 = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_1);
-+ u16 audio1 = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_1);
-
- audio1 &= ~WM8990_AIF_WL_MASK;
- /* bit size */
-@@ -1182,7 +1136,7 @@
- break;
- }
-
-- wm8990_write(codec, WM8990_AUDIO_INTERFACE_1, audio1);
-+ snd_soc_write(codec, WM8990_AUDIO_INTERFACE_1, audio1);
- return 0;
- }
-
-@@ -1191,12 +1145,12 @@
- struct snd_soc_codec *codec = dai->codec;
- u16 val;
-
-- val = wm8990_read_reg_cache(codec, WM8990_DAC_CTRL) & ~WM8990_DAC_MUTE;
-+ val = snd_soc_read(codec, WM8990_DAC_CTRL) & ~WM8990_DAC_MUTE;
-
- if (mute)
-- wm8990_write(codec, WM8990_DAC_CTRL, val | WM8990_DAC_MUTE);
-+ snd_soc_write(codec, WM8990_DAC_CTRL, val | WM8990_DAC_MUTE);
- else
-- wm8990_write(codec, WM8990_DAC_CTRL, val);
-+ snd_soc_write(codec, WM8990_DAC_CTRL, val);
-
- return 0;
- }
-@@ -1212,21 +1166,21 @@
-
- case SND_SOC_BIAS_PREPARE:
- /* VMID=2*50k */
-- val = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_1) &
-+ val = snd_soc_read(codec, WM8990_POWER_MANAGEMENT_1) &
- ~WM8990_VMID_MODE_MASK;
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x2);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x2);
- break;
-
- case SND_SOC_BIAS_STANDBY:
- if (codec->bias_level == SND_SOC_BIAS_OFF) {
- /* Enable all output discharge bits */
-- wm8990_write(codec, WM8990_ANTIPOP1, WM8990_DIS_LLINE |
-+ snd_soc_write(codec, WM8990_ANTIPOP1, WM8990_DIS_LLINE |
- WM8990_DIS_RLINE | WM8990_DIS_OUT3 |
- WM8990_DIS_OUT4 | WM8990_DIS_LOUT |
- WM8990_DIS_ROUT);
-
- /* Enable POBCTRL, SOFT_ST, VMIDTOG and BUFDCOPEN */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
- WM8990_BUFDCOPEN | WM8990_POBCTRL |
- WM8990_VMIDTOG);
-
-@@ -1234,83 +1188,83 @@
- msleep(msecs_to_jiffies(300));
-
- /* Disable VMIDTOG */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
- WM8990_BUFDCOPEN | WM8990_POBCTRL);
-
- /* disable all output discharge bits */
-- wm8990_write(codec, WM8990_ANTIPOP1, 0);
-+ snd_soc_write(codec, WM8990_ANTIPOP1, 0);
-
- /* Enable outputs */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1b00);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1b00);
-
- msleep(msecs_to_jiffies(50));
-
- /* Enable VMID at 2x50k */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f02);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f02);
-
- msleep(msecs_to_jiffies(100));
-
- /* Enable VREF */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f03);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f03);
-
- msleep(msecs_to_jiffies(600));
-
- /* Enable BUFIOEN */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
- WM8990_BUFDCOPEN | WM8990_POBCTRL |
- WM8990_BUFIOEN);
-
- /* Disable outputs */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x3);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x3);
-
- /* disable POBCTRL, SOFT_ST and BUFDCOPEN */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_BUFIOEN);
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_BUFIOEN);
-
- /* Enable workaround for ADC clocking issue. */
-- wm8990_write(codec, WM8990_EXT_ACCESS_ENA, 0x2);
-- wm8990_write(codec, WM8990_EXT_CTL1, 0xa003);
-- wm8990_write(codec, WM8990_EXT_ACCESS_ENA, 0);
-+ snd_soc_write(codec, WM8990_EXT_ACCESS_ENA, 0x2);
-+ snd_soc_write(codec, WM8990_EXT_CTL1, 0xa003);
-+ snd_soc_write(codec, WM8990_EXT_ACCESS_ENA, 0);
- }
-
- /* VMID=2*250k */
-- val = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_1) &
-+ val = snd_soc_read(codec, WM8990_POWER_MANAGEMENT_1) &
- ~WM8990_VMID_MODE_MASK;
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x4);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x4);
- break;
-
- case SND_SOC_BIAS_OFF:
- /* Enable POBCTRL and SOFT_ST */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
- WM8990_POBCTRL | WM8990_BUFIOEN);
-
- /* Enable POBCTRL, SOFT_ST and BUFDCOPEN */
-- wm8990_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
-+ snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST |
- WM8990_BUFDCOPEN | WM8990_POBCTRL |
- WM8990_BUFIOEN);
-
- /* mute DAC */
-- val = wm8990_read_reg_cache(codec, WM8990_DAC_CTRL);
-- wm8990_write(codec, WM8990_DAC_CTRL, val | WM8990_DAC_MUTE);
-+ val = snd_soc_read(codec, WM8990_DAC_CTRL);
-+ snd_soc_write(codec, WM8990_DAC_CTRL, val | WM8990_DAC_MUTE);
-
- /* Enable any disabled outputs */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f03);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f03);
-
- /* Disable VMID */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f01);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f01);
-
- msleep(msecs_to_jiffies(300));
-
- /* Enable all output discharge bits */
-- wm8990_write(codec, WM8990_ANTIPOP1, WM8990_DIS_LLINE |
-+ snd_soc_write(codec, WM8990_ANTIPOP1, WM8990_DIS_LLINE |
- WM8990_DIS_RLINE | WM8990_DIS_OUT3 |
- WM8990_DIS_OUT4 | WM8990_DIS_LOUT |
- WM8990_DIS_ROUT);
-
- /* Disable VREF */
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, 0x0);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x0);
-
- /* disable POBCTRL, SOFT_ST and BUFDCOPEN */
-- wm8990_write(codec, WM8990_ANTIPOP2, 0x0);
-+ snd_soc_write(codec, WM8990_ANTIPOP2, 0x0);
- break;
- }
-
-@@ -1411,8 +1365,6 @@
-
- codec->name = "WM8990";
- codec->owner = THIS_MODULE;
-- codec->read = wm8990_read_reg_cache;
-- codec->write = wm8990_write;
- codec->set_bias_level = wm8990_set_bias_level;
- codec->dai = &wm8990_dai;
- codec->num_dai = 2;
-@@ -1422,6 +1374,12 @@
- if (codec->reg_cache == NULL)
- return -ENOMEM;
-
-+ ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
-+ if (ret < 0) {
-+ printk(KERN_ERR "wm8990: failed to set cache I/O: %d\n", ret);
-+ goto pcm_err;
-+ }
-+
- wm8990_reset(codec);
-
- /* register pcms */
-@@ -1435,18 +1393,18 @@
- codec->bias_level = SND_SOC_BIAS_OFF;
- wm8990_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-- reg = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_4);
-- wm8990_write(codec, WM8990_AUDIO_INTERFACE_4, reg | WM8990_ALRCGPIO1);
-+ reg = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_4);
-+ snd_soc_write(codec, WM8990_AUDIO_INTERFACE_4, reg | WM8990_ALRCGPIO1);
-
-- reg = wm8990_read_reg_cache(codec, WM8990_GPIO1_GPIO2) &
-+ reg = snd_soc_read(codec, WM8990_GPIO1_GPIO2) &
- ~WM8990_GPIO1_SEL_MASK;
-- wm8990_write(codec, WM8990_GPIO1_GPIO2, reg | 1);
-+ snd_soc_write(codec, WM8990_GPIO1_GPIO2, reg | 1);
-
-- reg = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_2);
-- wm8990_write(codec, WM8990_POWER_MANAGEMENT_2, reg | WM8990_OPCLK_ENA);
-+ reg = snd_soc_read(codec, WM8990_POWER_MANAGEMENT_2);
-+ snd_soc_write(codec, WM8990_POWER_MANAGEMENT_2, reg | WM8990_OPCLK_ENA);
-
-- wm8990_write(codec, WM8990_LEFT_OUTPUT_VOLUME, 0x50 | (1<<8));
-- wm8990_write(codec, WM8990_RIGHT_OUTPUT_VOLUME, 0x50 | (1<<8));
-+ snd_soc_write(codec, WM8990_LEFT_OUTPUT_VOLUME, 0x50 | (1<<8));
-+ snd_soc_write(codec, WM8990_RIGHT_OUTPUT_VOLUME, 0x50 | (1<<8));
-
- snd_soc_add_controls(codec, wm8990_snd_controls,
- ARRAY_SIZE(wm8990_snd_controls));
-Index: linux-2.6.30/sound/soc/codecs/wm9705.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm9705.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm9705.c 2011-02-01 16:40:30.193007582 +0100
-@@ -282,14 +282,14 @@
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9705_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,
-+ .formats = SND_SOC_STD_AC97_FMTS,
- },
- .capture = {
- .stream_name = "HiFi Capture",
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9705_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,
-+ .formats = SND_SOC_STD_AC97_FMTS,
- },
- .ops = &wm9705_dai_ops,
- },
-@@ -406,7 +406,7 @@
- ret = snd_soc_init_card(socdev);
- if (ret < 0) {
- printk(KERN_ERR "wm9705: failed to register card\n");
-- goto pcm_err;
-+ goto reset_err;
- }
-
- return 0;
-Index: linux-2.6.30/sound/soc/codecs/wm9712.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm9712.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm9712.c 2011-02-01 16:40:30.193007582 +0100
-@@ -534,13 +534,13 @@
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9712_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .capture = {
- .stream_name = "HiFi Capture",
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9712_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .ops = &wm9712_dai_ops_hifi,
- },
- {
-@@ -550,7 +550,7 @@
- .channels_min = 1,
- .channels_max = 1,
- .rates = WM9712_AC97_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .ops = &wm9712_dai_ops_aux,
- }
- };
-@@ -585,6 +585,8 @@
- }
-
- soc_ac97_ops.reset(codec->ac97);
-+ if (soc_ac97_ops.warm_reset)
-+ soc_ac97_ops.warm_reset(codec->ac97);
- if (ac97_read(codec, 0) != wm9712_reg[0])
- goto err;
- return 0;
-Index: linux-2.6.30/sound/soc/codecs/wm9713.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/codecs/wm9713.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/codecs/wm9713.c 2011-02-01 16:40:30.193007582 +0100
-@@ -189,6 +189,26 @@
- SOC_SINGLE("3D Depth", AC97_REC_GAIN_MIC, 0, 15, 1),
- };
-
-+static int wm9713_voice_shutdown(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct snd_soc_codec *codec = w->codec;
-+ u16 status, rate;
-+
-+ BUG_ON(event != SND_SOC_DAPM_PRE_PMD);
-+
-+ /* Gracefully shut down the voice interface. */
-+ status = ac97_read(codec, AC97_EXTENDED_MID) | 0x1000;
-+ rate = ac97_read(codec, AC97_HANDSET_RATE) & 0xF0FF;
-+ ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0200);
-+ schedule_timeout_interruptible(msecs_to_jiffies(1));
-+ ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0F00);
-+ ac97_write(codec, AC97_EXTENDED_MID, status);
-+
-+ return 0;
-+}
-+
-+
- /* We have to create a fake left and right HP mixers because
- * the codec only has a single control that is shared by both channels.
- * This makes it impossible to determine the audio path using the current
-@@ -400,7 +420,8 @@
- SND_SOC_DAPM_MIXER("HP Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
- SND_SOC_DAPM_MIXER("Line Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
- SND_SOC_DAPM_MIXER("Capture Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
--SND_SOC_DAPM_DAC("Voice DAC", "Voice Playback", AC97_EXTENDED_MID, 12, 1),
-+SND_SOC_DAPM_DAC_E("Voice DAC", "Voice Playback", AC97_EXTENDED_MID, 12, 1,
-+ wm9713_voice_shutdown, SND_SOC_DAPM_PRE_PMD),
- SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", AC97_EXTENDED_MID, 11, 1),
- SND_SOC_DAPM_PGA("Left ADC", AC97_EXTENDED_MID, 5, 1, NULL, 0),
- SND_SOC_DAPM_PGA("Right ADC", AC97_EXTENDED_MID, 4, 1, NULL, 0),
-@@ -689,7 +710,7 @@
- Ndiv = target / source;
- if ((Ndiv < 5) || (Ndiv > 12))
- printk(KERN_WARNING
-- "WM9713 PLL N value %d out of recommended range!\n",
-+ "WM9713 PLL N value %u out of recommended range!\n",
- Ndiv);
-
- pll_div->n = Ndiv;
-@@ -779,8 +800,8 @@
- return 0;
- }
-
--static int wm9713_set_dai_pll(struct snd_soc_dai *codec_dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+static int wm9713_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
-+ int source, unsigned int freq_in, unsigned int freq_out)
- {
- struct snd_soc_codec *codec = codec_dai->codec;
- return wm9713_set_pll(codec, pll_id, freq_in, freq_out);
-@@ -936,21 +957,6 @@
- return 0;
- }
-
--static void wm9713_voiceshutdown(struct snd_pcm_substream *substream,
-- struct snd_soc_dai *dai)
--{
-- struct snd_soc_codec *codec = dai->codec;
-- u16 status, rate;
--
-- /* Gracefully shut down the voice interface. */
-- status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000;
-- rate = ac97_read(codec, AC97_HANDSET_RATE) & 0xF0FF;
-- ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0200);
-- schedule_timeout_interruptible(msecs_to_jiffies(1));
-- ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0F00);
-- ac97_write(codec, AC97_EXTENDED_MID, status);
--}
--
- static int ac97_hifi_prepare(struct snd_pcm_substream *substream,
- struct snd_soc_dai *dai)
- {
-@@ -1019,7 +1025,6 @@
-
- static struct snd_soc_dai_ops wm9713_dai_ops_voice = {
- .hw_params = wm9713_pcm_hw_params,
-- .shutdown = wm9713_voiceshutdown,
- .set_clkdiv = wm9713_set_dai_clkdiv,
- .set_pll = wm9713_set_dai_pll,
- .set_fmt = wm9713_set_dai_fmt,
-@@ -1035,13 +1040,13 @@
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9713_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .capture = {
- .stream_name = "HiFi Capture",
- .channels_min = 1,
- .channels_max = 2,
- .rates = WM9713_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .ops = &wm9713_dai_ops_hifi,
- },
- {
-@@ -1051,7 +1056,7 @@
- .channels_min = 1,
- .channels_max = 1,
- .rates = WM9713_RATES,
-- .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-+ .formats = SND_SOC_STD_AC97_FMTS,},
- .ops = &wm9713_dai_ops_aux,
- },
- {
-@@ -1069,6 +1074,7 @@
- .rates = WM9713_PCM_RATES,
- .formats = WM9713_PCM_FORMATS,},
- .ops = &wm9713_dai_ops_voice,
-+ .symmetric_rates = 1,
- },
- };
- EXPORT_SYMBOL_GPL(wm9713_dai);
-Index: linux-2.6.30/sound/soc/soc-cache.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/sound/soc/soc-cache.c 2011-02-01 16:40:30.193007582 +0100
-@@ -0,0 +1,258 @@
-+/*
-+ * soc-cache.c -- ASoC register cache helpers
-+ *
-+ * Copyright 2009 Wolfson Microelectronics PLC.
-+ *
-+ * Author: Mark Brown <broonie at opensource.wolfsonmicro.com>
-+ *
-+ * 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.
-+ */
-+
-+#include <linux/i2c.h>
-+#include <linux/spi/spi.h>
-+#include <sound/soc.h>
-+
-+static unsigned int snd_soc_7_9_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= codec->reg_cache_size)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+static int snd_soc_7_9_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ u8 data[2];
-+ int ret;
-+
-+ BUG_ON(codec->volatile_register);
-+
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ if (reg < codec->reg_cache_size)
-+ cache[reg] = value;
-+ ret = codec->hw_write(codec->control_data, data, 2);
-+ if (ret == 2)
-+ return 0;
-+ if (ret < 0)
-+ return ret;
-+ else
-+ return -EIO;
-+}
-+
-+#if defined(CONFIG_SPI_MASTER)
-+static int snd_soc_7_9_spi_write(void *control_data, const char *data,
-+ int len)
-+{
-+ struct spi_device *spi = control_data;
-+ struct spi_transfer t;
-+ struct spi_message m;
-+ u8 msg[2];
-+
-+ if (len <= 0)
-+ return 0;
-+
-+ msg[0] = data[0];
-+ msg[1] = data[1];
-+
-+ spi_message_init(&m);
-+ memset(&t, 0, (sizeof t));
-+
-+ t.tx_buf = &msg[0];
-+ t.len = len;
-+
-+ spi_message_add_tail(&t, &m);
-+ spi_sync(spi, &m);
-+
-+ return len;
-+}
-+#else
-+#define snd_soc_7_9_spi_write NULL
-+#endif
-+
-+static int snd_soc_8_8_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 *cache = codec->reg_cache;
-+ u8 data[2];
-+
-+ BUG_ON(codec->volatile_register);
-+
-+ data[0] = reg & 0xff;
-+ data[1] = value & 0xff;
-+
-+ if (reg < codec->reg_cache_size)
-+ cache[reg] = value;
-+
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+static unsigned int snd_soc_8_8_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u8 *cache = codec->reg_cache;
-+ if (reg >= codec->reg_cache_size)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+static int snd_soc_8_16_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u16 *reg_cache = codec->reg_cache;
-+ u8 data[3];
-+
-+ data[0] = reg;
-+ data[1] = (value >> 8) & 0xff;
-+ data[2] = value & 0xff;
-+
-+ if (!snd_soc_codec_volatile_register(codec, reg))
-+ reg_cache[reg] = value;
-+
-+ if (codec->hw_write(codec->control_data, data, 3) == 3)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+static unsigned int snd_soc_8_16_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+
-+ if (reg >= codec->reg_cache_size ||
-+ snd_soc_codec_volatile_register(codec, reg))
-+ return codec->hw_read(codec, reg);
-+ else
-+ return cache[reg];
-+}
-+
-+#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
-+static unsigned int snd_soc_8_16_read_i2c(struct snd_soc_codec *codec,
-+ unsigned int r)
-+{
-+ struct i2c_msg xfer[2];
-+ u8 reg = r;
-+ u16 data;
-+ int ret;
-+ struct i2c_client *client = codec->control_data;
-+
-+ /* Write register */
-+ xfer[0].addr = client->addr;
-+ xfer[0].flags = 0;
-+ xfer[0].len = 1;
-+ xfer[0].buf = ®
-+
-+ /* Read data */
-+ xfer[1].addr = client->addr;
-+ xfer[1].flags = I2C_M_RD;
-+ xfer[1].len = 2;
-+ xfer[1].buf = (u8 *)&data;
-+
-+ ret = i2c_transfer(client->adapter, xfer, 2);
-+ if (ret != 2) {
-+ dev_err(&client->dev, "i2c_transfer() returned %d\n", ret);
-+ return 0;
-+ }
-+
-+ return (data >> 8) | ((data & 0xff) << 8);
-+}
-+#else
-+#define snd_soc_8_16_read_i2c NULL
-+#endif
-+
-+static struct {
-+ int addr_bits;
-+ int data_bits;
-+ int (*write)(struct snd_soc_codec *codec, unsigned int, unsigned int);
-+ int (*spi_write)(void *, const char *, int);
-+ unsigned int (*read)(struct snd_soc_codec *, unsigned int);
-+ unsigned int (*i2c_read)(struct snd_soc_codec *, unsigned int);
-+} io_types[] = {
-+ {
-+ .addr_bits = 7, .data_bits = 9,
-+ .write = snd_soc_7_9_write, .read = snd_soc_7_9_read,
-+ .spi_write = snd_soc_7_9_spi_write
-+ },
-+ {
-+ .addr_bits = 8, .data_bits = 8,
-+ .write = snd_soc_8_8_write, .read = snd_soc_8_8_read,
-+ },
-+ {
-+ .addr_bits = 8, .data_bits = 16,
-+ .write = snd_soc_8_16_write, .read = snd_soc_8_16_read,
-+ .i2c_read = snd_soc_8_16_read_i2c,
-+ },
-+};
-+
-+/**
-+ * snd_soc_codec_set_cache_io: Set up standard I/O functions.
-+ *
-+ * @codec: CODEC to configure.
-+ * @type: Type of cache.
-+ * @addr_bits: Number of bits of register address data.
-+ * @data_bits: Number of bits of data per register.
-+ * @control: Control bus used.
-+ *
-+ * Register formats are frequently shared between many I2C and SPI
-+ * devices. In order to promote code reuse the ASoC core provides
-+ * some standard implementations of CODEC read and write operations
-+ * which can be set up using this function.
-+ *
-+ * The caller is responsible for allocating and initialising the
-+ * actual cache.
-+ *
-+ * Note that at present this code cannot be used by CODECs with
-+ * volatile registers.
-+ */
-+int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
-+ int addr_bits, int data_bits,
-+ enum snd_soc_control_type control)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(io_types); i++)
-+ if (io_types[i].addr_bits == addr_bits &&
-+ io_types[i].data_bits == data_bits)
-+ break;
-+ if (i == ARRAY_SIZE(io_types)) {
-+ printk(KERN_ERR
-+ "No I/O functions for %d bit address %d bit data\n",
-+ addr_bits, data_bits);
-+ return -EINVAL;
-+ }
-+
-+ codec->write = io_types[i].write;
-+ codec->read = io_types[i].read;
-+
-+ switch (control) {
-+ case SND_SOC_CUSTOM:
-+ break;
-+
-+ case SND_SOC_I2C:
-+#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+#endif
-+ if (io_types[i].i2c_read)
-+ codec->hw_read = io_types[i].i2c_read;
-+ break;
-+
-+ case SND_SOC_SPI:
-+ if (io_types[i].spi_write)
-+ codec->hw_write = io_types[i].spi_write;
-+ break;
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_codec_set_cache_io);
-Index: linux-2.6.30/sound/soc/soc-core.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/soc-core.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/soc-core.c 2011-02-01 16:40:30.193007582 +0100
-@@ -28,6 +28,7 @@
- #include <linux/bitops.h>
- #include <linux/debugfs.h>
- #include <linux/platform_device.h>
-+#include <sound/ac97_codec.h>
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/pcm_params.h>
-@@ -113,6 +114,35 @@
- }
- #endif
-
-+static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_card *card = socdev->card;
-+ struct snd_soc_dai_link *machine = rtd->dai;
-+ struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-+ struct snd_soc_dai *codec_dai = machine->codec_dai;
-+ int ret;
-+
-+ if (codec_dai->symmetric_rates || cpu_dai->symmetric_rates ||
-+ machine->symmetric_rates) {
-+ dev_dbg(card->dev, "Symmetry forces %dHz rate\n",
-+ machine->rate);
-+
-+ ret = snd_pcm_hw_constraint_minmax(substream->runtime,
-+ SNDRV_PCM_HW_PARAM_RATE,
-+ machine->rate,
-+ machine->rate);
-+ if (ret < 0) {
-+ dev_err(card->dev,
-+ "Unable to apply rate symmetry constraint: %d\n", ret);
-+ return ret;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
- /*
- * Called by ALSA when a PCM substream is opened, the runtime->hw record is
- * then initialized and any private data can be allocated. This also calls
-@@ -221,6 +251,13 @@
- goto machine_err;
- }
-
-+ /* Symmetry only applies if we've already got an active stream. */
-+ if (cpu_dai->active || codec_dai->active) {
-+ ret = soc_pcm_apply_symmetry(substream);
-+ if (ret != 0)
-+ goto machine_err;
-+ }
-+
- pr_debug("asoc: %s <-> %s info:\n", codec_dai->name, cpu_dai->name);
- pr_debug("asoc: rate mask 0x%x\n", runtime->hw.rates);
- pr_debug("asoc: min ch %d max ch %d\n", runtime->hw.channels_min,
-@@ -263,7 +300,6 @@
- {
- struct snd_soc_card *card = container_of(work, struct snd_soc_card,
- delayed_work.work);
-- struct snd_soc_device *socdev = card->socdev;
- struct snd_soc_codec *codec = card->codec;
- struct snd_soc_dai *codec_dai;
- int i;
-@@ -279,27 +315,10 @@
-
- /* are we waiting on this codec DAI stream */
- if (codec_dai->pop_wait == 1) {
--
-- /* Reduce power if no longer active */
-- if (codec->active == 0) {
-- pr_debug("pop wq D1 %s %s\n", codec->name,
-- codec_dai->playback.stream_name);
-- snd_soc_dapm_set_bias_level(socdev,
-- SND_SOC_BIAS_PREPARE);
-- }
--
- codec_dai->pop_wait = 0;
- snd_soc_dapm_stream_event(codec,
- codec_dai->playback.stream_name,
- SND_SOC_DAPM_STREAM_STOP);
--
-- /* Fall into standby if no longer active */
-- if (codec->active == 0) {
-- pr_debug("pop wq D3 %s %s\n", codec->name,
-- codec_dai->playback.stream_name);
-- snd_soc_dapm_set_bias_level(socdev,
-- SND_SOC_BIAS_STANDBY);
-- }
- }
- }
- mutex_unlock(&pcm_mutex);
-@@ -363,10 +382,6 @@
- snd_soc_dapm_stream_event(codec,
- codec_dai->capture.stream_name,
- SND_SOC_DAPM_STREAM_STOP);
--
-- if (codec->active == 0 && codec_dai->pop_wait == 0)
-- snd_soc_dapm_set_bias_level(socdev,
-- SND_SOC_BIAS_STANDBY);
- }
-
- mutex_unlock(&pcm_mutex);
-@@ -431,36 +446,16 @@
- cancel_delayed_work(&card->delayed_work);
- }
-
-- /* do we need to power up codec */
-- if (codec->bias_level != SND_SOC_BIAS_ON) {
-- snd_soc_dapm_set_bias_level(socdev,
-- SND_SOC_BIAS_PREPARE);
--
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- snd_soc_dapm_stream_event(codec,
-- codec_dai->playback.stream_name,
-- SND_SOC_DAPM_STREAM_START);
-- else
-- snd_soc_dapm_stream_event(codec,
-- codec_dai->capture.stream_name,
-- SND_SOC_DAPM_STREAM_START);
--
-- snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_ON);
-- snd_soc_dai_digital_mute(codec_dai, 0);
--
-- } else {
-- /* codec already powered - power on widgets */
-- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-- snd_soc_dapm_stream_event(codec,
-- codec_dai->playback.stream_name,
-- SND_SOC_DAPM_STREAM_START);
-- else
-- snd_soc_dapm_stream_event(codec,
-- codec_dai->capture.stream_name,
-- SND_SOC_DAPM_STREAM_START);
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ snd_soc_dapm_stream_event(codec,
-+ codec_dai->playback.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+ else
-+ snd_soc_dapm_stream_event(codec,
-+ codec_dai->capture.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-
-- snd_soc_dai_digital_mute(codec_dai, 0);
-- }
-+ snd_soc_dai_digital_mute(codec_dai, 0);
-
- out:
- mutex_unlock(&pcm_mutex);
-@@ -521,6 +516,8 @@
- }
- }
-
-+ machine->rate = params_rate(params);
-+
- out:
- mutex_unlock(&pcm_mutex);
- return ret;
-@@ -623,8 +620,9 @@
-
- #ifdef CONFIG_PM
- /* powers down audio subsystem for suspend */
--static int soc_suspend(struct platform_device *pdev, pm_message_t state)
-+static int soc_suspend(struct device *dev)
- {
-+ struct platform_device *pdev = to_platform_device(dev);
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct snd_soc_card *card = socdev->card;
- struct snd_soc_platform *platform = card->platform;
-@@ -632,6 +630,12 @@
- struct snd_soc_codec *codec = card->codec;
- int i;
-
-+ /* If the initialization of this soc device failed, there is no codec
-+ * associated with it. Just bail out in this case.
-+ */
-+ if (!codec)
-+ return 0;
-+
- /* Due to the resume being scheduled into a workqueue we could
- * suspend before that's finished - wait for it to complete.
- */
-@@ -654,7 +658,7 @@
- snd_pcm_suspend_all(card->dai_link[i].pcm);
-
- if (card->suspend_pre)
-- card->suspend_pre(pdev, state);
-+ card->suspend_pre(pdev, PMSG_SUSPEND);
-
- for (i = 0; i < card->num_links; i++) {
- struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
-@@ -680,7 +684,7 @@
- }
-
- if (codec_dev->suspend)
-- codec_dev->suspend(pdev, state);
-+ codec_dev->suspend(pdev, PMSG_SUSPEND);
-
- for (i = 0; i < card->num_links; i++) {
- struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
-@@ -689,7 +693,7 @@
- }
-
- if (card->suspend_post)
-- card->suspend_post(pdev, state);
-+ card->suspend_post(pdev, PMSG_SUSPEND);
-
- return 0;
- }
-@@ -763,8 +767,9 @@
- }
-
- /* powers up audio subsystem after a suspend */
--static int soc_resume(struct platform_device *pdev)
-+static int soc_resume(struct device *dev)
- {
-+ struct platform_device *pdev = to_platform_device(dev);
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct snd_soc_card *card = socdev->card;
- struct snd_soc_dai *cpu_dai = card->dai_link[0].cpu_dai;
-@@ -786,6 +791,44 @@
- return 0;
- }
-
-+/**
-+ * snd_soc_suspend_device: Notify core of device suspend
-+ *
-+ * @dev: Device being suspended.
-+ *
-+ * In order to ensure that the entire audio subsystem is suspended in a
-+ * coordinated fashion ASoC devices should suspend themselves when
-+ * called by ASoC. When the standard kernel suspend process asks the
-+ * device to suspend it should call this function to initiate a suspend
-+ * of the entire ASoC card.
-+ *
-+ * \note Currently this function is stubbed out.
-+ */
-+int snd_soc_suspend_device(struct device *dev)
-+{
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_suspend_device);
-+
-+/**
-+ * snd_soc_resume_device: Notify core of device resume
-+ *
-+ * @dev: Device being resumed.
-+ *
-+ * In order to ensure that the entire audio subsystem is resumed in a
-+ * coordinated fashion ASoC devices should resume themselves when called
-+ * by ASoC. When the standard kernel resume process asks the device
-+ * to resume it should call this function. Once all the components of
-+ * the card have notified that they are ready to be resumed the card
-+ * will be resumed.
-+ *
-+ * \note Currently this function is stubbed out.
-+ */
-+int snd_soc_resume_device(struct device *dev)
-+{
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_resume_device);
- #else
- #define soc_suspend NULL
- #define soc_resume NULL
-@@ -979,16 +1022,39 @@
- return 0;
- }
-
-+static int soc_poweroff(struct device *dev)
-+{
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_card *card = socdev->card;
-+
-+ if (!card->instantiated)
-+ return 0;
-+
-+ /* Flush out pmdown_time work - we actually do want to run it
-+ * now, we're shutting down so no imminent restart. */
-+ run_delayed_work(&card->delayed_work);
-+
-+ snd_soc_dapm_shutdown(socdev);
-+
-+ return 0;
-+}
-+
-+static struct dev_pm_ops soc_pm_ops = {
-+ .suspend = soc_suspend,
-+ .resume = soc_resume,
-+ .poweroff = soc_poweroff,
-+};
-+
- /* ASoC platform driver */
- static struct platform_driver soc_driver = {
- .driver = {
- .name = "soc-audio",
- .owner = THIS_MODULE,
-+ .pm = &soc_pm_ops,
- },
- .probe = soc_probe,
- .remove = soc_remove,
-- .suspend = soc_suspend,
-- .resume = soc_resume,
- };
-
- /* create a new pcm */
-@@ -1060,6 +1126,23 @@
- return ret;
- }
-
-+/**
-+ * snd_soc_codec_volatile_register: Report if a register is volatile.
-+ *
-+ * @codec: CODEC to query.
-+ * @reg: Register to query.
-+ *
-+ * Boolean function indiciating if a CODEC register is volatile.
-+ */
-+int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg)
-+{
-+ if (codec->volatile_register)
-+ return codec->volatile_register(reg);
-+ else
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_codec_volatile_register);
-+
- /* codec register dump */
- static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf)
- {
-@@ -1073,6 +1156,9 @@
-
- count += sprintf(buf, "%s registers\n", codec->name);
- for (i = 0; i < codec->reg_cache_size; i += step) {
-+ if (codec->readable_register && !codec->readable_register(i))
-+ continue;
-+
- count += sprintf(buf + count, "%2x: ", i);
- if (count >= PAGE_SIZE - 1)
- break;
-@@ -1168,25 +1254,49 @@
-
- static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
- {
-+ char codec_root[128];
-+
-+ if (codec->dev)
-+ snprintf(codec_root, sizeof(codec_root),
-+ "%s.%s", codec->name, dev_name(codec->dev));
-+ else
-+ snprintf(codec_root, sizeof(codec_root),
-+ "%s", codec->name);
-+
-+ codec->debugfs_codec_root = debugfs_create_dir(codec_root,
-+ debugfs_root);
-+ if (!codec->debugfs_codec_root) {
-+ printk(KERN_WARNING
-+ "ASoC: Failed to create codec debugfs directory\n");
-+ return;
-+ }
-+
- codec->debugfs_reg = debugfs_create_file("codec_reg", 0644,
-- debugfs_root, codec,
-- &codec_reg_fops);
-+ codec->debugfs_codec_root,
-+ codec, &codec_reg_fops);
- if (!codec->debugfs_reg)
- printk(KERN_WARNING
- "ASoC: Failed to create codec register debugfs file\n");
-
- codec->debugfs_pop_time = debugfs_create_u32("dapm_pop_time", 0744,
-- debugfs_root,
-+ codec->debugfs_codec_root,
- &codec->pop_time);
- if (!codec->debugfs_pop_time)
- printk(KERN_WARNING
- "Failed to create pop time debugfs file\n");
-+
-+ codec->debugfs_dapm = debugfs_create_dir("dapm",
-+ codec->debugfs_codec_root);
-+ if (!codec->debugfs_dapm)
-+ printk(KERN_WARNING
-+ "Failed to create DAPM debugfs directory\n");
-+
-+ snd_soc_dapm_debugfs_init(codec);
- }
-
- static void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
- {
-- debugfs_remove(codec->debugfs_pop_time);
-- debugfs_remove(codec->debugfs_reg);
-+ debugfs_remove_recursive(codec->debugfs_codec_root);
- }
-
- #else
-@@ -1262,10 +1372,10 @@
- * Returns 1 for change else 0.
- */
- int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
-- unsigned short mask, unsigned short value)
-+ unsigned int mask, unsigned int value)
- {
- int change;
-- unsigned short old, new;
-+ unsigned int old, new;
-
- mutex_lock(&io_mutex);
- old = snd_soc_read(codec, reg);
-@@ -1292,10 +1402,10 @@
- * Returns 1 for change else 0.
- */
- int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
-- unsigned short mask, unsigned short value)
-+ unsigned int mask, unsigned int value)
- {
- int change;
-- unsigned short old, new;
-+ unsigned int old, new;
-
- mutex_lock(&io_mutex);
- old = snd_soc_read(codec, reg);
-@@ -1334,6 +1444,7 @@
- return ret;
- }
-
-+ codec->socdev = socdev;
- codec->card->dev = socdev->dev;
- codec->card->private_data = codec;
- strncpy(codec->card->driver, codec->name, sizeof(codec->card->driver));
-@@ -1378,14 +1489,20 @@
- continue;
- }
- }
-- if (card->dai_link[i].codec_dai->ac97_control)
-+ if (card->dai_link[i].codec_dai->ac97_control) {
- ac97 = 1;
-+ snd_ac97_dev_add_pdata(codec->ac97,
-+ card->dai_link[i].cpu_dai->ac97_pdata);
-+ }
- }
- snprintf(codec->card->shortname, sizeof(codec->card->shortname),
- "%s", card->name);
- snprintf(codec->card->longname, sizeof(codec->card->longname),
- "%s (%s)", card->name, codec->name);
-
-+ /* Make sure all DAPM widgets are instantiated */
-+ snd_soc_dapm_new_widgets(codec);
-+
- ret = snd_card_register(codec->card);
- if (ret < 0) {
- printk(KERN_ERR "asoc: failed to register soundcard for %s\n",
-@@ -1580,7 +1697,7 @@
- {
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val, bitmask;
-+ unsigned int val, bitmask;
-
- for (bitmask = 1; bitmask < e->max; bitmask <<= 1)
- ;
-@@ -1609,8 +1726,8 @@
- {
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val;
-- unsigned short mask, bitmask;
-+ unsigned int val;
-+ unsigned int mask, bitmask;
-
- for (bitmask = 1; bitmask < e->max; bitmask <<= 1)
- ;
-@@ -1646,7 +1763,7 @@
- {
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short reg_val, val, mux;
-+ unsigned int reg_val, val, mux;
-
- reg_val = snd_soc_read(codec, e->reg);
- val = (reg_val >> e->shift_l) & e->mask;
-@@ -1685,8 +1802,8 @@
- {
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val;
-- unsigned short mask;
-+ unsigned int val;
-+ unsigned int mask;
-
- if (ucontrol->value.enumerated.item[0] > e->max - 1)
- return -EINVAL;
-@@ -1744,7 +1861,7 @@
- {
- int max = kcontrol->private_value;
-
-- if (max == 1)
-+ if (max == 1 && !strstr(kcontrol->id.name, " Volume"))
- uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
- else
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-@@ -1774,7 +1891,7 @@
- unsigned int shift = mc->shift;
- unsigned int rshift = mc->rshift;
-
-- if (max == 1)
-+ if (max == 1 && !strstr(kcontrol->id.name, " Volume"))
- uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
- else
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-@@ -1846,7 +1963,7 @@
- int max = mc->max;
- unsigned int mask = (1 << fls(max)) - 1;
- unsigned int invert = mc->invert;
-- unsigned short val, val2, val_mask;
-+ unsigned int val, val2, val_mask;
-
- val = (ucontrol->value.integer.value[0] & mask);
- if (invert)
-@@ -1881,7 +1998,7 @@
- (struct soc_mixer_control *)kcontrol->private_value;
- int max = mc->max;
-
-- if (max == 1)
-+ if (max == 1 && !strstr(kcontrol->id.name, " Volume"))
- uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
- else
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-@@ -1912,7 +2029,7 @@
- unsigned int reg2 = mc->rreg;
- unsigned int shift = mc->shift;
- int max = mc->max;
-- unsigned int mask = (1<<fls(max))-1;
-+ unsigned int mask = (1 << fls(max)) - 1;
- unsigned int invert = mc->invert;
-
- ucontrol->value.integer.value[0] =
-@@ -1952,7 +2069,7 @@
- unsigned int mask = (1 << fls(max)) - 1;
- unsigned int invert = mc->invert;
- int err;
-- unsigned short val, val2, val_mask;
-+ unsigned int val, val2, val_mask;
-
- val_mask = mask << shift;
- val = (ucontrol->value.integer.value[0] & mask);
-@@ -2044,7 +2161,7 @@
- struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
- unsigned int reg = mc->reg;
- int min = mc->min;
-- unsigned short val;
-+ unsigned int val;
-
- val = (ucontrol->value.integer.value[0]+min) & 0xff;
- val |= ((ucontrol->value.integer.value[1]+min) & 0xff) << 8;
-@@ -2065,7 +2182,7 @@
- int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
- unsigned int freq, int dir)
- {
-- if (dai->ops->set_sysclk)
-+ if (dai->ops && dai->ops->set_sysclk)
- return dai->ops->set_sysclk(dai, clk_id, freq, dir);
- else
- return -EINVAL;
-@@ -2085,7 +2202,7 @@
- int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai,
- int div_id, int div)
- {
-- if (dai->ops->set_clkdiv)
-+ if (dai->ops && dai->ops->set_clkdiv)
- return dai->ops->set_clkdiv(dai, div_id, div);
- else
- return -EINVAL;
-@@ -2096,16 +2213,18 @@
- * snd_soc_dai_set_pll - configure DAI PLL.
- * @dai: DAI
- * @pll_id: DAI specific PLL ID
-+ * @source: DAI specific source for the PLL
- * @freq_in: PLL input clock frequency in Hz
- * @freq_out: requested PLL output clock frequency in Hz
- *
- * Configures and enables PLL to generate output clock based on input clock.
- */
--int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
-- int pll_id, unsigned int freq_in, unsigned int freq_out)
-+int snd_soc_dai_set_pll(struct snd_soc_dai *dai, int pll_id, int source,
-+ unsigned int freq_in, unsigned int freq_out)
- {
-- if (dai->ops->set_pll)
-- return dai->ops->set_pll(dai, pll_id, freq_in, freq_out);
-+ if (dai->ops && dai->ops->set_pll)
-+ return dai->ops->set_pll(dai, pll_id, source,
-+ freq_in, freq_out);
- else
- return -EINVAL;
- }
-@@ -2120,7 +2239,7 @@
- */
- int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
- {
-- if (dai->ops->set_fmt)
-+ if (dai->ops && dai->ops->set_fmt)
- return dai->ops->set_fmt(dai, fmt);
- else
- return -EINVAL;
-@@ -2130,23 +2249,50 @@
- /**
- * snd_soc_dai_set_tdm_slot - configure DAI TDM.
- * @dai: DAI
-- * @mask: DAI specific mask representing used slots.
-+ * @tx_mask: bitmask representing active TX slots.
-+ * @rx_mask: bitmask representing active RX slots.
- * @slots: Number of slots in use.
-+ * @slot_width: Width in bits for each slot.
- *
- * Configures a DAI for TDM operation. Both mask and slots are codec and DAI
- * specific.
- */
- int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
-- unsigned int mask, int slots)
-+ unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
- {
-- if (dai->ops->set_sysclk)
-- return dai->ops->set_tdm_slot(dai, mask, slots);
-+ if (dai->ops && dai->ops->set_tdm_slot)
-+ return dai->ops->set_tdm_slot(dai, tx_mask, rx_mask,
-+ slots, slot_width);
- else
- return -EINVAL;
- }
- EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_slot);
-
- /**
-+ * snd_soc_dai_set_channel_map - configure DAI audio channel map
-+ * @dai: DAI
-+ * @tx_num: how many TX channels
-+ * @tx_slot: pointer to an array which imply the TX slot number channel
-+ * 0~num-1 uses
-+ * @rx_num: how many RX channels
-+ * @rx_slot: pointer to an array which imply the RX slot number channel
-+ * 0~num-1 uses
-+ *
-+ * configure the relationship between channel number and TDM slot number.
-+ */
-+int snd_soc_dai_set_channel_map(struct snd_soc_dai *dai,
-+ unsigned int tx_num, unsigned int *tx_slot,
-+ unsigned int rx_num, unsigned int *rx_slot)
-+{
-+ if (dai->ops && dai->ops->set_channel_map)
-+ return dai->ops->set_channel_map(dai, tx_num, tx_slot,
-+ rx_num, rx_slot);
-+ else
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dai_set_channel_map);
-+
-+/**
- * snd_soc_dai_set_tristate - configure DAI system or master clock.
- * @dai: DAI
- * @tristate: tristate enable
-@@ -2155,7 +2301,7 @@
- */
- int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate)
- {
-- if (dai->ops->set_sysclk)
-+ if (dai->ops && dai->ops->set_tristate)
- return dai->ops->set_tristate(dai, tristate);
- else
- return -EINVAL;
-@@ -2171,7 +2317,7 @@
- */
- int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute)
- {
-- if (dai->ops->digital_mute)
-+ if (dai->ops && dai->ops->digital_mute)
- return dai->ops->digital_mute(dai, mute);
- else
- return -EINVAL;
-@@ -2352,6 +2498,39 @@
- }
- EXPORT_SYMBOL_GPL(snd_soc_unregister_platform);
-
-+static u64 codec_format_map[] = {
-+ SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE,
-+ SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U16_BE,
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE,
-+ SNDRV_PCM_FMTBIT_U24_LE | SNDRV_PCM_FMTBIT_U24_BE,
-+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE,
-+ SNDRV_PCM_FMTBIT_U32_LE | SNDRV_PCM_FMTBIT_U32_BE,
-+ SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_U24_3BE,
-+ SNDRV_PCM_FMTBIT_U24_3LE | SNDRV_PCM_FMTBIT_U24_3BE,
-+ SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S20_3BE,
-+ SNDRV_PCM_FMTBIT_U20_3LE | SNDRV_PCM_FMTBIT_U20_3BE,
-+ SNDRV_PCM_FMTBIT_S18_3LE | SNDRV_PCM_FMTBIT_S18_3BE,
-+ SNDRV_PCM_FMTBIT_U18_3LE | SNDRV_PCM_FMTBIT_U18_3BE,
-+ SNDRV_PCM_FMTBIT_FLOAT_LE | SNDRV_PCM_FMTBIT_FLOAT_BE,
-+ SNDRV_PCM_FMTBIT_FLOAT64_LE | SNDRV_PCM_FMTBIT_FLOAT64_BE,
-+ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE
-+ | SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE,
-+};
-+
-+/* Fix up the DAI formats for endianness: codecs don't actually see
-+ * the endianness of the data but we're using the CPU format
-+ * definitions which do need to include endianness so we ensure that
-+ * codec DAIs always have both big and little endian variants set.
-+ */
-+static void fixup_codec_formats(struct snd_soc_pcm_stream *stream)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(codec_format_map); i++)
-+ if (stream->formats & codec_format_map[i])
-+ stream->formats |= codec_format_map[i];
-+}
-+
- /**
- * snd_soc_register_codec - Register a codec with the ASoC core
- *
-@@ -2359,6 +2538,8 @@
- */
- int snd_soc_register_codec(struct snd_soc_codec *codec)
- {
-+ int i;
-+
- if (!codec->name)
- return -EINVAL;
-
-@@ -2368,6 +2549,11 @@
-
- INIT_LIST_HEAD(&codec->list);
-
-+ for (i = 0; i < codec->num_dai; i++) {
-+ fixup_codec_formats(&codec->dai[i].playback);
-+ fixup_codec_formats(&codec->dai[i].capture);
-+ }
-+
- mutex_lock(&client_mutex);
- list_add(&codec->list, &codec_list);
- snd_soc_instantiate_cards();
-Index: linux-2.6.30/sound/soc/soc-dapm.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/soc-dapm.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/soc-dapm.c 2011-02-01 16:40:30.193007582 +0100
-@@ -12,7 +12,7 @@
- * Features:
- * o Changes power status of internal codec blocks depending on the
- * dynamic configuration of codec internal audio paths and active
-- * DAC's/ADC's.
-+ * DACs/ADCs.
- * o Platform power domain - can support external components i.e. amps and
- * mic/meadphone insertion events.
- * o Automatic Mic Bias support
-@@ -37,6 +37,7 @@
- #include <linux/bitops.h>
- #include <linux/platform_device.h>
- #include <linux/jiffies.h>
-+#include <linux/debugfs.h>
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/pcm_params.h>
-@@ -52,23 +53,43 @@
-
- /* dapm power sequences - make this per codec in the future */
- static int dapm_up_seq[] = {
-- snd_soc_dapm_pre, snd_soc_dapm_micbias, snd_soc_dapm_mic,
-- snd_soc_dapm_mux, snd_soc_dapm_value_mux, snd_soc_dapm_dac,
-- snd_soc_dapm_mixer, snd_soc_dapm_mixer_named_ctl, snd_soc_dapm_pga,
-- snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk, snd_soc_dapm_post
-+ [snd_soc_dapm_pre] = 0,
-+ [snd_soc_dapm_supply] = 1,
-+ [snd_soc_dapm_micbias] = 2,
-+ [snd_soc_dapm_aif_in] = 3,
-+ [snd_soc_dapm_aif_out] = 3,
-+ [snd_soc_dapm_mic] = 4,
-+ [snd_soc_dapm_mux] = 5,
-+ [snd_soc_dapm_value_mux] = 5,
-+ [snd_soc_dapm_dac] = 6,
-+ [snd_soc_dapm_mixer] = 7,
-+ [snd_soc_dapm_mixer_named_ctl] = 7,
-+ [snd_soc_dapm_pga] = 8,
-+ [snd_soc_dapm_adc] = 9,
-+ [snd_soc_dapm_hp] = 10,
-+ [snd_soc_dapm_spk] = 10,
-+ [snd_soc_dapm_post] = 11,
- };
-
- static int dapm_down_seq[] = {
-- snd_soc_dapm_pre, snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk,
-- snd_soc_dapm_pga, snd_soc_dapm_mixer_named_ctl, snd_soc_dapm_mixer,
-- snd_soc_dapm_dac, snd_soc_dapm_mic, snd_soc_dapm_micbias,
-- snd_soc_dapm_mux, snd_soc_dapm_value_mux, snd_soc_dapm_post
-+ [snd_soc_dapm_pre] = 0,
-+ [snd_soc_dapm_adc] = 1,
-+ [snd_soc_dapm_hp] = 2,
-+ [snd_soc_dapm_spk] = 2,
-+ [snd_soc_dapm_pga] = 4,
-+ [snd_soc_dapm_mixer_named_ctl] = 5,
-+ [snd_soc_dapm_mixer] = 5,
-+ [snd_soc_dapm_dac] = 6,
-+ [snd_soc_dapm_mic] = 7,
-+ [snd_soc_dapm_micbias] = 8,
-+ [snd_soc_dapm_mux] = 9,
-+ [snd_soc_dapm_value_mux] = 9,
-+ [snd_soc_dapm_aif_in] = 10,
-+ [snd_soc_dapm_aif_out] = 10,
-+ [snd_soc_dapm_supply] = 11,
-+ [snd_soc_dapm_post] = 12,
- };
-
--static int dapm_status = 1;
--module_param(dapm_status, int, 0);
--MODULE_PARM_DESC(dapm_status, "enable DPM sysfs entries");
--
- static void pop_wait(u32 pop_time)
- {
- if (pop_time)
-@@ -96,6 +117,52 @@
- return kmemdup(_widget, sizeof(*_widget), GFP_KERNEL);
- }
-
-+/**
-+ * snd_soc_dapm_set_bias_level - set the bias level for the system
-+ * @socdev: audio device
-+ * @level: level to configure
-+ *
-+ * Configure the bias (power) levels for the SoC audio device.
-+ *
-+ * Returns 0 for success else error.
-+ */
-+static int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
-+ enum snd_soc_bias_level level)
-+{
-+ struct snd_soc_card *card = socdev->card;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+ int ret = 0;
-+
-+ switch (level) {
-+ case SND_SOC_BIAS_ON:
-+ dev_dbg(socdev->dev, "Setting full bias\n");
-+ break;
-+ case SND_SOC_BIAS_PREPARE:
-+ dev_dbg(socdev->dev, "Setting bias prepare\n");
-+ break;
-+ case SND_SOC_BIAS_STANDBY:
-+ dev_dbg(socdev->dev, "Setting standby bias\n");
-+ break;
-+ case SND_SOC_BIAS_OFF:
-+ dev_dbg(socdev->dev, "Setting bias off\n");
-+ break;
-+ default:
-+ dev_err(socdev->dev, "Setting invalid bias %d\n", level);
-+ return -EINVAL;
-+ }
-+
-+ if (card->set_bias_level)
-+ ret = card->set_bias_level(card, level);
-+ if (ret == 0) {
-+ if (codec->set_bias_level)
-+ ret = codec->set_bias_level(codec, level);
-+ else
-+ codec->bias_level = level;
-+ }
-+
-+ return ret;
-+}
-+
- /* set up initial codec paths */
- static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
- struct snd_soc_dapm_path *p, int i)
-@@ -165,6 +232,9 @@
- case snd_soc_dapm_dac:
- case snd_soc_dapm_micbias:
- case snd_soc_dapm_vmid:
-+ case snd_soc_dapm_supply:
-+ case snd_soc_dapm_aif_in:
-+ case snd_soc_dapm_aif_out:
- p->connect = 1;
- break;
- /* does effect routing - dynamically connected */
-@@ -179,7 +249,7 @@
- }
- }
-
--/* connect mux widget to it's interconnecting audio paths */
-+/* connect mux widget to its interconnecting audio paths */
- static int dapm_connect_mux(struct snd_soc_codec *codec,
- struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
- struct snd_soc_dapm_path *path, const char *control_name,
-@@ -202,7 +272,7 @@
- return -ENODEV;
- }
-
--/* connect mixer widget to it's interconnecting audio paths */
-+/* connect mixer widget to its interconnecting audio paths */
- static int dapm_connect_mixer(struct snd_soc_codec *codec,
- struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
- struct snd_soc_dapm_path *path, const char *control_name)
-@@ -227,7 +297,7 @@
- static int dapm_update_bits(struct snd_soc_dapm_widget *widget)
- {
- int change, power;
-- unsigned short old, new;
-+ unsigned int old, new;
- struct snd_soc_codec *codec = widget->codec;
-
- /* check for valid widgets */
-@@ -357,8 +427,9 @@
- path->long_name);
- ret = snd_ctl_add(codec->card, path->kcontrol);
- if (ret < 0) {
-- printk(KERN_ERR "asoc: failed to add dapm kcontrol %s\n",
-- path->long_name);
-+ printk(KERN_ERR "asoc: failed to add dapm kcontrol %s: %d\n",
-+ path->long_name,
-+ ret);
- kfree(path->long_name);
- path->long_name = NULL;
- return ret;
-@@ -434,8 +505,17 @@
- struct snd_soc_dapm_path *path;
- int con = 0;
-
-- if (widget->id == snd_soc_dapm_adc && widget->active)
-- return 1;
-+ if (widget->id == snd_soc_dapm_supply)
-+ return 0;
-+
-+ switch (widget->id) {
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_aif_out:
-+ if (widget->active)
-+ return 1;
-+ default:
-+ break;
-+ }
-
- if (widget->connected) {
- /* connected pin ? */
-@@ -444,7 +524,7 @@
-
- /* connected jack or spk ? */
- if (widget->id == snd_soc_dapm_hp || widget->id == snd_soc_dapm_spk ||
-- widget->id == snd_soc_dapm_line)
-+ (widget->id == snd_soc_dapm_line && !list_empty(&widget->sources)))
- return 1;
- }
-
-@@ -470,9 +550,18 @@
- struct snd_soc_dapm_path *path;
- int con = 0;
-
-+ if (widget->id == snd_soc_dapm_supply)
-+ return 0;
-+
- /* active stream ? */
-- if (widget->id == snd_soc_dapm_dac && widget->active)
-- return 1;
-+ switch (widget->id) {
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_aif_in:
-+ if (widget->active)
-+ return 1;
-+ default:
-+ break;
-+ }
-
- if (widget->connected) {
- /* connected pin ? */
-@@ -484,7 +573,8 @@
- return 1;
-
- /* connected jack ? */
-- if (widget->id == snd_soc_dapm_mic || widget->id == snd_soc_dapm_line)
-+ if (widget->id == snd_soc_dapm_mic ||
-+ (widget->id == snd_soc_dapm_line && !list_empty(&widget->sinks)))
- return 1;
- }
-
-@@ -521,84 +611,12 @@
- }
- EXPORT_SYMBOL_GPL(dapm_reg_event);
-
--/*
-- * Scan a single DAPM widget for a complete audio path and update the
-- * power status appropriately.
-+/* Standard power change method, used to apply power changes to most
-+ * widgets.
- */
--static int dapm_power_widget(struct snd_soc_codec *codec, int event,
-- struct snd_soc_dapm_widget *w)
-+static int dapm_generic_apply_power(struct snd_soc_dapm_widget *w)
- {
-- int in, out, power_change, power, ret;
--
-- /* vmid - no action */
-- if (w->id == snd_soc_dapm_vmid)
-- return 0;
--
-- /* active ADC */
-- if (w->id == snd_soc_dapm_adc && w->active) {
-- in = is_connected_input_ep(w);
-- dapm_clear_walk(w->codec);
-- w->power = (in != 0) ? 1 : 0;
-- dapm_update_bits(w);
-- return 0;
-- }
--
-- /* active DAC */
-- if (w->id == snd_soc_dapm_dac && w->active) {
-- out = is_connected_output_ep(w);
-- dapm_clear_walk(w->codec);
-- w->power = (out != 0) ? 1 : 0;
-- dapm_update_bits(w);
-- return 0;
-- }
--
-- /* pre and post event widgets */
-- if (w->id == snd_soc_dapm_pre) {
-- if (!w->event)
-- return 0;
--
-- if (event == SND_SOC_DAPM_STREAM_START) {
-- ret = w->event(w,
-- NULL, SND_SOC_DAPM_PRE_PMU);
-- if (ret < 0)
-- return ret;
-- } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-- ret = w->event(w,
-- NULL, SND_SOC_DAPM_PRE_PMD);
-- if (ret < 0)
-- return ret;
-- }
-- return 0;
-- }
-- if (w->id == snd_soc_dapm_post) {
-- if (!w->event)
-- return 0;
--
-- if (event == SND_SOC_DAPM_STREAM_START) {
-- ret = w->event(w,
-- NULL, SND_SOC_DAPM_POST_PMU);
-- if (ret < 0)
-- return ret;
-- } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-- ret = w->event(w,
-- NULL, SND_SOC_DAPM_POST_PMD);
-- if (ret < 0)
-- return ret;
-- }
-- return 0;
-- }
--
-- /* all other widgets */
-- in = is_connected_input_ep(w);
-- dapm_clear_walk(w->codec);
-- out = is_connected_output_ep(w);
-- dapm_clear_walk(w->codec);
-- power = (out != 0 && in != 0) ? 1 : 0;
-- power_change = (w->power == power) ? 0 : 1;
-- w->power = power;
--
-- if (!power_change)
-- return 0;
-+ int ret;
-
- /* call any power change event handlers */
- if (w->event)
-@@ -607,7 +625,7 @@
- w->name, w->event_flags);
-
- /* power up pre event */
-- if (power && w->event &&
-+ if (w->power && w->event &&
- (w->event_flags & SND_SOC_DAPM_PRE_PMU)) {
- ret = w->event(w, NULL, SND_SOC_DAPM_PRE_PMU);
- if (ret < 0)
-@@ -615,7 +633,7 @@
- }
-
- /* power down pre event */
-- if (!power && w->event &&
-+ if (!w->power && w->event &&
- (w->event_flags & SND_SOC_DAPM_PRE_PMD)) {
- ret = w->event(w, NULL, SND_SOC_DAPM_PRE_PMD);
- if (ret < 0)
-@@ -623,17 +641,17 @@
- }
-
- /* Lower PGA volume to reduce pops */
-- if (w->id == snd_soc_dapm_pga && !power)
-- dapm_set_pga(w, power);
-+ if (w->id == snd_soc_dapm_pga && !w->power)
-+ dapm_set_pga(w, w->power);
-
- dapm_update_bits(w);
-
- /* Raise PGA volume to reduce pops */
-- if (w->id == snd_soc_dapm_pga && power)
-- dapm_set_pga(w, power);
-+ if (w->id == snd_soc_dapm_pga && w->power)
-+ dapm_set_pga(w, w->power);
-
- /* power up post event */
-- if (power && w->event &&
-+ if (w->power && w->event &&
- (w->event_flags & SND_SOC_DAPM_POST_PMU)) {
- ret = w->event(w,
- NULL, SND_SOC_DAPM_POST_PMU);
-@@ -642,7 +660,7 @@
- }
-
- /* power down post event */
-- if (!power && w->event &&
-+ if (!w->power && w->event &&
- (w->event_flags & SND_SOC_DAPM_POST_PMD)) {
- ret = w->event(w, NULL, SND_SOC_DAPM_POST_PMD);
- if (ret < 0)
-@@ -652,6 +670,278 @@
- return 0;
- }
-
-+/* Generic check to see if a widget should be powered.
-+ */
-+static int dapm_generic_check_power(struct snd_soc_dapm_widget *w)
-+{
-+ int in, out;
-+
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ return out != 0 && in != 0;
-+}
-+
-+/* Check to see if an ADC has power */
-+static int dapm_adc_check_power(struct snd_soc_dapm_widget *w)
-+{
-+ int in;
-+
-+ if (w->active) {
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ return in != 0;
-+ } else {
-+ return dapm_generic_check_power(w);
-+ }
-+}
-+
-+/* Check to see if a DAC has power */
-+static int dapm_dac_check_power(struct snd_soc_dapm_widget *w)
-+{
-+ int out;
-+
-+ if (w->active) {
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ return out != 0;
-+ } else {
-+ return dapm_generic_check_power(w);
-+ }
-+}
-+
-+/* Check to see if a power supply is needed */
-+static int dapm_supply_check_power(struct snd_soc_dapm_widget *w)
-+{
-+ struct snd_soc_dapm_path *path;
-+ int power = 0;
-+
-+ /* Check if one of our outputs is connected */
-+ list_for_each_entry(path, &w->sinks, list_source) {
-+ if (path->connected &&
-+ !path->connected(path->source, path->sink))
-+ continue;
-+
-+ if (path->sink && path->sink->power_check &&
-+ path->sink->power_check(path->sink)) {
-+ power = 1;
-+ break;
-+ }
-+ }
-+
-+ dapm_clear_walk(w->codec);
-+
-+ return power;
-+}
-+
-+static int dapm_seq_compare(struct snd_soc_dapm_widget *a,
-+ struct snd_soc_dapm_widget *b,
-+ int sort[])
-+{
-+ if (sort[a->id] != sort[b->id])
-+ return sort[a->id] - sort[b->id];
-+ if (a->reg != b->reg)
-+ return a->reg - b->reg;
-+
-+ return 0;
-+}
-+
-+/* Insert a widget in order into a DAPM power sequence. */
-+static void dapm_seq_insert(struct snd_soc_dapm_widget *new_widget,
-+ struct list_head *list,
-+ int sort[])
-+{
-+ struct snd_soc_dapm_widget *w;
-+
-+ list_for_each_entry(w, list, power_list)
-+ if (dapm_seq_compare(new_widget, w, sort) < 0) {
-+ list_add_tail(&new_widget->power_list, &w->power_list);
-+ return;
-+ }
-+
-+ list_add_tail(&new_widget->power_list, list);
-+}
-+
-+/* Apply the coalesced changes from a DAPM sequence */
-+static void dapm_seq_run_coalesced(struct snd_soc_codec *codec,
-+ struct list_head *pending)
-+{
-+ struct snd_soc_dapm_widget *w;
-+ int reg, power, ret;
-+ unsigned int value = 0;
-+ unsigned int mask = 0;
-+ unsigned int cur_mask;
-+
-+ reg = list_first_entry(pending, struct snd_soc_dapm_widget,
-+ power_list)->reg;
-+
-+ list_for_each_entry(w, pending, power_list) {
-+ cur_mask = 1 << w->shift;
-+ BUG_ON(reg != w->reg);
-+
-+ if (w->invert)
-+ power = !w->power;
-+ else
-+ power = w->power;
-+
-+ mask |= cur_mask;
-+ if (power)
-+ value |= cur_mask;
-+
-+ pop_dbg(codec->pop_time,
-+ "pop test : Queue %s: reg=0x%x, 0x%x/0x%x\n",
-+ w->name, reg, value, mask);
-+
-+ /* power up pre event */
-+ if (w->power && w->event &&
-+ (w->event_flags & SND_SOC_DAPM_PRE_PMU)) {
-+ pop_dbg(codec->pop_time, "pop test : %s PRE_PMU\n",
-+ w->name);
-+ ret = w->event(w, NULL, SND_SOC_DAPM_PRE_PMU);
-+ if (ret < 0)
-+ pr_err("%s: pre event failed: %d\n",
-+ w->name, ret);
-+ }
-+
-+ /* power down pre event */
-+ if (!w->power && w->event &&
-+ (w->event_flags & SND_SOC_DAPM_PRE_PMD)) {
-+ pop_dbg(codec->pop_time, "pop test : %s PRE_PMD\n",
-+ w->name);
-+ ret = w->event(w, NULL, SND_SOC_DAPM_PRE_PMD);
-+ if (ret < 0)
-+ pr_err("%s: pre event failed: %d\n",
-+ w->name, ret);
-+ }
-+
-+ /* Lower PGA volume to reduce pops */
-+ if (w->id == snd_soc_dapm_pga && !w->power)
-+ dapm_set_pga(w, w->power);
-+ }
-+
-+ if (reg >= 0) {
-+ pop_dbg(codec->pop_time,
-+ "pop test : Applying 0x%x/0x%x to %x in %dms\n",
-+ value, mask, reg, codec->pop_time);
-+ pop_wait(codec->pop_time);
-+ snd_soc_update_bits(codec, reg, mask, value);
-+ }
-+
-+ list_for_each_entry(w, pending, power_list) {
-+ /* Raise PGA volume to reduce pops */
-+ if (w->id == snd_soc_dapm_pga && w->power)
-+ dapm_set_pga(w, w->power);
-+
-+ /* power up post event */
-+ if (w->power && w->event &&
-+ (w->event_flags & SND_SOC_DAPM_POST_PMU)) {
-+ pop_dbg(codec->pop_time, "pop test : %s POST_PMU\n",
-+ w->name);
-+ ret = w->event(w,
-+ NULL, SND_SOC_DAPM_POST_PMU);
-+ if (ret < 0)
-+ pr_err("%s: post event failed: %d\n",
-+ w->name, ret);
-+ }
-+
-+ /* power down post event */
-+ if (!w->power && w->event &&
-+ (w->event_flags & SND_SOC_DAPM_POST_PMD)) {
-+ pop_dbg(codec->pop_time, "pop test : %s POST_PMD\n",
-+ w->name);
-+ ret = w->event(w, NULL, SND_SOC_DAPM_POST_PMD);
-+ if (ret < 0)
-+ pr_err("%s: post event failed: %d\n",
-+ w->name, ret);
-+ }
-+ }
-+}
-+
-+/* Apply a DAPM power sequence.
-+ *
-+ * We walk over a pre-sorted list of widgets to apply power to. In
-+ * order to minimise the number of writes to the device required
-+ * multiple widgets will be updated in a single write where possible.
-+ * Currently anything that requires more than a single write is not
-+ * handled.
-+ */
-+static void dapm_seq_run(struct snd_soc_codec *codec, struct list_head *list,
-+ int event, int sort[])
-+{
-+ struct snd_soc_dapm_widget *w, *n;
-+ LIST_HEAD(pending);
-+ int cur_sort = -1;
-+ int cur_reg = SND_SOC_NOPM;
-+ int ret;
-+
-+ list_for_each_entry_safe(w, n, list, power_list) {
-+ ret = 0;
-+
-+ /* Do we need to apply any queued changes? */
-+ if (sort[w->id] != cur_sort || w->reg != cur_reg) {
-+ if (!list_empty(&pending))
-+ dapm_seq_run_coalesced(codec, &pending);
-+
-+ INIT_LIST_HEAD(&pending);
-+ cur_sort = -1;
-+ cur_reg = SND_SOC_NOPM;
-+ }
-+
-+ switch (w->id) {
-+ case snd_soc_dapm_pre:
-+ if (!w->event)
-+ list_for_each_entry_safe_continue(w, n, list,
-+ power_list);
-+
-+ if (event == SND_SOC_DAPM_STREAM_START)
-+ ret = w->event(w,
-+ NULL, SND_SOC_DAPM_PRE_PMU);
-+ else if (event == SND_SOC_DAPM_STREAM_STOP)
-+ ret = w->event(w,
-+ NULL, SND_SOC_DAPM_PRE_PMD);
-+ break;
-+
-+ case snd_soc_dapm_post:
-+ if (!w->event)
-+ list_for_each_entry_safe_continue(w, n, list,
-+ power_list);
-+
-+ if (event == SND_SOC_DAPM_STREAM_START)
-+ ret = w->event(w,
-+ NULL, SND_SOC_DAPM_POST_PMU);
-+ else if (event == SND_SOC_DAPM_STREAM_STOP)
-+ ret = w->event(w,
-+ NULL, SND_SOC_DAPM_POST_PMD);
-+ break;
-+
-+ case snd_soc_dapm_input:
-+ case snd_soc_dapm_output:
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_spk:
-+ /* No register support currently */
-+ ret = dapm_generic_apply_power(w);
-+ break;
-+
-+ default:
-+ /* Queue it up for application */
-+ cur_sort = sort[w->id];
-+ cur_reg = w->reg;
-+ list_move(&w->power_list, &pending);
-+ break;
-+ }
-+
-+ if (ret < 0)
-+ pr_err("Failed to apply widget power: %d\n",
-+ ret);
-+ }
-+
-+ if (!list_empty(&pending))
-+ dapm_seq_run_coalesced(codec, &pending);
-+}
-+
- /*
- * Scan each dapm widget for complete audio path.
- * A complete path is a route that has valid endpoints i.e.:-
-@@ -663,31 +953,97 @@
- */
- static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
- {
-+ struct snd_soc_device *socdev = codec->socdev;
- struct snd_soc_dapm_widget *w;
-- int i, c = 1, *seq = NULL, ret = 0;
-+ LIST_HEAD(up_list);
-+ LIST_HEAD(down_list);
-+ int ret = 0;
-+ int power;
-+ int sys_power = 0;
-
-- /* do we have a sequenced stream event */
-- if (event == SND_SOC_DAPM_STREAM_START) {
-- c = ARRAY_SIZE(dapm_up_seq);
-- seq = dapm_up_seq;
-- } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-- c = ARRAY_SIZE(dapm_down_seq);
-- seq = dapm_down_seq;
-- }
-+ /* Check which widgets we need to power and store them in
-+ * lists indicating if they should be powered up or down.
-+ */
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+ switch (w->id) {
-+ case snd_soc_dapm_pre:
-+ dapm_seq_insert(w, &down_list, dapm_down_seq);
-+ break;
-+ case snd_soc_dapm_post:
-+ dapm_seq_insert(w, &up_list, dapm_up_seq);
-+ break;
-
-- for (i = 0; i < c; i++) {
-- list_for_each_entry(w, &codec->dapm_widgets, list) {
-+ default:
-+ if (!w->power_check)
-+ continue;
-
-- /* is widget in stream order */
-- if (seq && seq[i] && w->id != seq[i])
-+ power = w->power_check(w);
-+ if (power)
-+ sys_power = 1;
-+
-+ if (w->power == power)
- continue;
-
-- ret = dapm_power_widget(codec, event, w);
-- if (ret != 0)
-- return ret;
-+ if (power)
-+ dapm_seq_insert(w, &up_list, dapm_up_seq);
-+ else
-+ dapm_seq_insert(w, &down_list, dapm_down_seq);
-+
-+ w->power = power;
-+ break;
-+ }
-+ }
-+
-+ /* If there are no DAPM widgets then try to figure out power from the
-+ * event type.
-+ */
-+ if (list_empty(&codec->dapm_widgets)) {
-+ switch (event) {
-+ case SND_SOC_DAPM_STREAM_START:
-+ case SND_SOC_DAPM_STREAM_RESUME:
-+ sys_power = 1;
-+ break;
-+ case SND_SOC_DAPM_STREAM_NOP:
-+ sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY;
-+ default:
-+ break;
- }
- }
-
-+ /* If we're changing to all on or all off then prepare */
-+ if ((sys_power && codec->bias_level == SND_SOC_BIAS_STANDBY) ||
-+ (!sys_power && codec->bias_level == SND_SOC_BIAS_ON)) {
-+ ret = snd_soc_dapm_set_bias_level(socdev,
-+ SND_SOC_BIAS_PREPARE);
-+ if (ret != 0)
-+ pr_err("Failed to prepare bias: %d\n", ret);
-+ }
-+
-+ /* Power down widgets first; try to avoid amplifying pops. */
-+ dapm_seq_run(codec, &down_list, event, dapm_down_seq);
-+
-+ /* Now power up. */
-+ dapm_seq_run(codec, &up_list, event, dapm_up_seq);
-+
-+ /* If we just powered the last thing off drop to standby bias */
-+ if (codec->bias_level == SND_SOC_BIAS_PREPARE && !sys_power) {
-+ ret = snd_soc_dapm_set_bias_level(socdev,
-+ SND_SOC_BIAS_STANDBY);
-+ if (ret != 0)
-+ pr_err("Failed to apply standby bias: %d\n", ret);
-+ }
-+
-+ /* If we just powered up then move to active bias */
-+ if (codec->bias_level == SND_SOC_BIAS_PREPARE && sys_power) {
-+ ret = snd_soc_dapm_set_bias_level(socdev,
-+ SND_SOC_BIAS_ON);
-+ if (ret != 0)
-+ pr_err("Failed to apply active bias: %d\n", ret);
-+ }
-+
-+ pop_dbg(codec->pop_time, "DAPM sequencing finished, waiting %dms\n",
-+ codec->pop_time);
-+
- return 0;
- }
-
-@@ -723,6 +1079,9 @@
- case snd_soc_dapm_pga:
- case snd_soc_dapm_mixer:
- case snd_soc_dapm_mixer_named_ctl:
-+ case snd_soc_dapm_supply:
-+ case snd_soc_dapm_aif_in:
-+ case snd_soc_dapm_aif_out:
- if (w->name) {
- in = is_connected_input_ep(w);
- dapm_clear_walk(w->codec);
-@@ -748,10 +1107,103 @@
- }
- #endif
-
-+#ifdef CONFIG_DEBUG_FS
-+static int dapm_widget_power_open_file(struct inode *inode, struct file *file)
-+{
-+ file->private_data = inode->i_private;
-+ return 0;
-+}
-+
-+static ssize_t dapm_widget_power_read_file(struct file *file,
-+ char __user *user_buf,
-+ size_t count, loff_t *ppos)
-+{
-+ struct snd_soc_dapm_widget *w = file->private_data;
-+ char *buf;
-+ int in, out;
-+ ssize_t ret;
-+ struct snd_soc_dapm_path *p = NULL;
-+
-+ buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+
-+ ret = snprintf(buf, PAGE_SIZE, "%s: %s in %d out %d\n",
-+ w->name, w->power ? "On" : "Off", in, out);
-+
-+ if (w->sname)
-+ ret += snprintf(buf + ret, PAGE_SIZE - ret, " stream %s %s\n",
-+ w->sname,
-+ w->active ? "active" : "inactive");
-+
-+ list_for_each_entry(p, &w->sources, list_sink) {
-+ if (p->connected && !p->connected(w, p->sink))
-+ continue;
-+
-+ if (p->connect)
-+ ret += snprintf(buf + ret, PAGE_SIZE - ret,
-+ " in %s %s\n",
-+ p->name ? p->name : "static",
-+ p->source->name);
-+ }
-+ list_for_each_entry(p, &w->sinks, list_source) {
-+ if (p->connected && !p->connected(w, p->sink))
-+ continue;
-+
-+ if (p->connect)
-+ ret += snprintf(buf + ret, PAGE_SIZE - ret,
-+ " out %s %s\n",
-+ p->name ? p->name : "static",
-+ p->sink->name);
-+ }
-+
-+ ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
-+
-+ kfree(buf);
-+ return ret;
-+}
-+
-+static const struct file_operations dapm_widget_power_fops = {
-+ .open = dapm_widget_power_open_file,
-+ .read = dapm_widget_power_read_file,
-+};
-+
-+void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec)
-+{
-+ struct snd_soc_dapm_widget *w;
-+ struct dentry *d;
-+
-+ if (!codec->debugfs_dapm)
-+ return;
-+
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+ if (!w->name)
-+ continue;
-+
-+ d = debugfs_create_file(w->name, 0444,
-+ codec->debugfs_dapm, w,
-+ &dapm_widget_power_fops);
-+ if (!d)
-+ printk(KERN_WARNING
-+ "ASoC: Failed to create %s debugfs file\n",
-+ w->name);
-+ }
-+}
-+#else
-+void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec)
-+{
-+}
-+#endif
-+
- /* test and update the power status of a mux widget */
- static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
-- struct snd_kcontrol *kcontrol, int mask,
-- int mux, int val, struct soc_enum *e)
-+ struct snd_kcontrol *kcontrol, int change,
-+ int mux, struct soc_enum *e)
- {
- struct snd_soc_dapm_path *path;
- int found = 0;
-@@ -760,7 +1212,7 @@
- widget->id != snd_soc_dapm_value_mux)
- return -ENODEV;
-
-- if (!snd_soc_test_bits(widget->codec, e->reg, mask, val))
-+ if (!change)
- return 0;
-
- /* find dapm widget path assoc with kcontrol */
-@@ -851,6 +1303,7 @@
- case snd_soc_dapm_pga:
- case snd_soc_dapm_mixer:
- case snd_soc_dapm_mixer_named_ctl:
-+ case snd_soc_dapm_supply:
- if (w->name)
- count += sprintf(buf + count, "%s: %s\n",
- w->name, w->power ? "On":"Off");
-@@ -883,16 +1336,12 @@
-
- int snd_soc_dapm_sys_add(struct device *dev)
- {
-- if (!dapm_status)
-- return 0;
- return device_create_file(dev, &dev_attr_dapm_widget);
- }
-
- static void snd_soc_dapm_sys_remove(struct device *dev)
- {
-- if (dapm_status) {
-- device_remove_file(dev, &dev_attr_dapm_widget);
-- }
-+ device_remove_file(dev, &dev_attr_dapm_widget);
- }
-
- /* free all dapm widgets and resources */
-@@ -948,10 +1397,13 @@
- EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
-
- static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
-- const char *sink, const char *control, const char *source)
-+ const struct snd_soc_dapm_route *route)
- {
- struct snd_soc_dapm_path *path;
- struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w;
-+ const char *sink = route->sink;
-+ const char *control = route->control;
-+ const char *source = route->source;
- int ret = 0;
-
- /* find src and dest widgets */
-@@ -975,6 +1427,7 @@
-
- path->source = wsource;
- path->sink = wsink;
-+ path->connected = route->connected;
- INIT_LIST_HEAD(&path->list);
- INIT_LIST_HEAD(&path->list_source);
- INIT_LIST_HEAD(&path->list_sink);
-@@ -983,8 +1436,8 @@
- if (wsink->id == snd_soc_dapm_input) {
- if (wsource->id == snd_soc_dapm_micbias ||
- wsource->id == snd_soc_dapm_mic ||
-- wsink->id == snd_soc_dapm_line ||
-- wsink->id == snd_soc_dapm_output)
-+ wsource->id == snd_soc_dapm_line ||
-+ wsource->id == snd_soc_dapm_output)
- wsink->ext = 1;
- }
- if (wsource->id == snd_soc_dapm_output) {
-@@ -1015,6 +1468,9 @@
- case snd_soc_dapm_vmid:
- case snd_soc_dapm_pre:
- case snd_soc_dapm_post:
-+ case snd_soc_dapm_supply:
-+ case snd_soc_dapm_aif_in:
-+ case snd_soc_dapm_aif_out:
- list_add(&path->list, &codec->dapm_paths);
- list_add(&path->list_sink, &wsink->sources);
- list_add(&path->list_source, &wsource->sinks);
-@@ -1072,8 +1528,7 @@
- int i, ret;
-
- for (i = 0; i < num; i++) {
-- ret = snd_soc_dapm_add_route(codec, route->sink,
-- route->control, route->source);
-+ ret = snd_soc_dapm_add_route(codec, route);
- if (ret < 0) {
- printk(KERN_ERR "Failed to add route %s->%s\n",
- route->source,
-@@ -1108,15 +1563,24 @@
- case snd_soc_dapm_switch:
- case snd_soc_dapm_mixer:
- case snd_soc_dapm_mixer_named_ctl:
-+ w->power_check = dapm_generic_check_power;
- dapm_new_mixer(codec, w);
- break;
- case snd_soc_dapm_mux:
- case snd_soc_dapm_value_mux:
-+ w->power_check = dapm_generic_check_power;
- dapm_new_mux(codec, w);
- break;
- case snd_soc_dapm_adc:
-+ case snd_soc_dapm_aif_out:
-+ w->power_check = dapm_adc_check_power;
-+ break;
- case snd_soc_dapm_dac:
-+ case snd_soc_dapm_aif_in:
-+ w->power_check = dapm_dac_check_power;
-+ break;
- case snd_soc_dapm_pga:
-+ w->power_check = dapm_generic_check_power;
- dapm_new_pga(codec, w);
- break;
- case snd_soc_dapm_input:
-@@ -1126,6 +1590,10 @@
- case snd_soc_dapm_hp:
- case snd_soc_dapm_mic:
- case snd_soc_dapm_line:
-+ w->power_check = dapm_generic_check_power;
-+ break;
-+ case snd_soc_dapm_supply:
-+ w->power_check = dapm_supply_check_power;
- case snd_soc_dapm_vmid:
- case snd_soc_dapm_pre:
- case snd_soc_dapm_post:
-@@ -1205,7 +1673,7 @@
- int max = mc->max;
- unsigned int mask = (1 << fls(max)) - 1;
- unsigned int invert = mc->invert;
-- unsigned short val, val2, val_mask;
-+ unsigned int val, val2, val_mask;
- int ret;
-
- val = (ucontrol->value.integer.value[0] & mask);
-@@ -1269,7 +1737,7 @@
- {
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val, bitmask;
-+ unsigned int val, bitmask;
-
- for (bitmask = 1; bitmask < e->max; bitmask <<= 1)
- ;
-@@ -1297,8 +1765,8 @@
- {
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val, mux;
-- unsigned short mask, bitmask;
-+ unsigned int val, mux, change;
-+ unsigned int mask, bitmask;
- int ret = 0;
-
- for (bitmask = 1; bitmask < e->max; bitmask <<= 1)
-@@ -1317,20 +1785,21 @@
-
- mutex_lock(&widget->codec->mutex);
- widget->value = val;
-- dapm_mux_update_power(widget, kcontrol, mask, mux, val, e);
-- if (widget->event) {
-- if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-- ret = widget->event(widget,
-- kcontrol, SND_SOC_DAPM_PRE_REG);
-- if (ret < 0)
-- goto out;
-- }
-- ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-- if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-- ret = widget->event(widget,
-- kcontrol, SND_SOC_DAPM_POST_REG);
-- } else
-- ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+ change = snd_soc_test_bits(widget->codec, e->reg, mask, val);
-+ dapm_mux_update_power(widget, kcontrol, change, mux, e);
-+
-+ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-+ ret = widget->event(widget,
-+ kcontrol, SND_SOC_DAPM_PRE_REG);
-+ if (ret < 0)
-+ goto out;
-+ }
-+
-+ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+
-+ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-+ ret = widget->event(widget,
-+ kcontrol, SND_SOC_DAPM_POST_REG);
-
- out:
- mutex_unlock(&widget->codec->mutex);
-@@ -1339,6 +1808,54 @@
- EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_double);
-
- /**
-+ * snd_soc_dapm_get_enum_virt - Get virtual DAPM mux
-+ * @kcontrol: mixer control
-+ * @ucontrol: control element information
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_get_enum_virt(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+
-+ ucontrol->value.enumerated.item[0] = widget->value;
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_get_enum_virt);
-+
-+/**
-+ * snd_soc_dapm_put_enum_virt - Set virtual DAPM mux
-+ * @kcontrol: mixer control
-+ * @ucontrol: control element information
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+ struct soc_enum *e =
-+ (struct soc_enum *)kcontrol->private_value;
-+ int change;
-+ int ret = 0;
-+
-+ if (ucontrol->value.enumerated.item[0] >= e->max)
-+ return -EINVAL;
-+
-+ mutex_lock(&widget->codec->mutex);
-+
-+ change = widget->value != ucontrol->value.enumerated.item[0];
-+ widget->value = ucontrol->value.enumerated.item[0];
-+ dapm_mux_update_power(widget, kcontrol, change, widget->value, e);
-+
-+ mutex_unlock(&widget->codec->mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_virt);
-+
-+/**
- * snd_soc_dapm_get_value_enum_double - dapm semi enumerated double mixer get
- * callback
- * @kcontrol: mixer control
-@@ -1356,7 +1873,7 @@
- {
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short reg_val, val, mux;
-+ unsigned int reg_val, val, mux;
-
- reg_val = snd_soc_read(widget->codec, e->reg);
- val = (reg_val >> e->shift_l) & e->mask;
-@@ -1396,8 +1913,8 @@
- {
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
- struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-- unsigned short val, mux;
-- unsigned short mask;
-+ unsigned int val, mux, change;
-+ unsigned int mask;
- int ret = 0;
-
- if (ucontrol->value.enumerated.item[0] > e->max - 1)
-@@ -1414,20 +1931,21 @@
-
- mutex_lock(&widget->codec->mutex);
- widget->value = val;
-- dapm_mux_update_power(widget, kcontrol, mask, mux, val, e);
-- if (widget->event) {
-- if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-- ret = widget->event(widget,
-- kcontrol, SND_SOC_DAPM_PRE_REG);
-- if (ret < 0)
-- goto out;
-- }
-- ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-- if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-- ret = widget->event(widget,
-- kcontrol, SND_SOC_DAPM_POST_REG);
-- } else
-- ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+ change = snd_soc_test_bits(widget->codec, e->reg, mask, val);
-+ dapm_mux_update_power(widget, kcontrol, change, mux, e);
-+
-+ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-+ ret = widget->event(widget,
-+ kcontrol, SND_SOC_DAPM_PRE_REG);
-+ if (ret < 0)
-+ goto out;
-+ }
-+
-+ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+
-+ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-+ ret = widget->event(widget,
-+ kcontrol, SND_SOC_DAPM_POST_REG);
-
- out:
- mutex_unlock(&widget->codec->mutex);
-@@ -1626,35 +2144,11 @@
- EXPORT_SYMBOL_GPL(snd_soc_dapm_stream_event);
-
- /**
-- * snd_soc_dapm_set_bias_level - set the bias level for the system
-- * @socdev: audio device
-- * @level: level to configure
-- *
-- * Configure the bias (power) levels for the SoC audio device.
-- *
-- * Returns 0 for success else error.
-- */
--int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
-- enum snd_soc_bias_level level)
--{
-- struct snd_soc_card *card = socdev->card;
-- struct snd_soc_codec *codec = socdev->card->codec;
-- int ret = 0;
--
-- if (card->set_bias_level)
-- ret = card->set_bias_level(card, level);
-- if (ret == 0 && codec->set_bias_level)
-- ret = codec->set_bias_level(codec, level);
--
-- return ret;
--}
--
--/**
- * snd_soc_dapm_enable_pin - enable pin.
- * @codec: SoC codec
- * @pin: pin name
- *
-- * Enables input/output pin and it's parents or children widgets iff there is
-+ * Enables input/output pin and its parents or children widgets iff there is
- * a valid audio route and active audio stream.
- * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
- * do any widget power switching.
-@@ -1670,7 +2164,7 @@
- * @codec: SoC codec
- * @pin: pin name
- *
-- * Disables input/output pin and it's parents or children widgets.
-+ * Disables input/output pin and its parents or children widgets.
- * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
- * do any widget power switching.
- */
-@@ -1737,6 +2231,36 @@
- }
- EXPORT_SYMBOL_GPL(snd_soc_dapm_free);
-
-+/*
-+ * snd_soc_dapm_shutdown - callback for system shutdown
-+ */
-+void snd_soc_dapm_shutdown(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+ struct snd_soc_dapm_widget *w;
-+ LIST_HEAD(down_list);
-+ int powerdown = 0;
-+
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+ if (w->power) {
-+ dapm_seq_insert(w, &down_list, dapm_down_seq);
-+ w->power = 0;
-+ powerdown = 1;
-+ }
-+ }
-+
-+ /* If there were no widgets to power down we're already in
-+ * standby.
-+ */
-+ if (powerdown) {
-+ snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_PREPARE);
-+ dapm_seq_run(codec, &down_list, 0, dapm_down_seq);
-+ snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_STANDBY);
-+ }
-+
-+ snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_OFF);
-+}
-+
- /* Module information */
- MODULE_AUTHOR("Liam Girdwood, lrg at slimlogic.co.uk");
- MODULE_DESCRIPTION("Dynamic Audio Power Management core for ALSA SoC");
-Index: linux-2.6.30/sound/soc/soc-jack.c
-===================================================================
---- linux-2.6.30.orig/sound/soc/soc-jack.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/sound/soc/soc-jack.c 2011-02-01 16:40:30.193007582 +0100
-@@ -73,14 +73,15 @@
- oldstatus = jack->status;
-
- jack->status &= ~mask;
-- jack->status |= status;
-+ jack->status |= status & mask;
-
-- /* The DAPM sync is expensive enough to be worth skipping */
-- if (jack->status == oldstatus)
-+ /* The DAPM sync is expensive enough to be worth skipping.
-+ * However, empty mask means pin synchronization is desired. */
-+ if (mask && (jack->status == oldstatus))
- goto out;
-
- list_for_each_entry(pin, &jack->pins, list) {
-- enable = pin->mask & status;
-+ enable = pin->mask & jack->status;
-
- if (pin->invert)
- enable = !enable;
-@@ -220,6 +221,9 @@
- if (ret)
- goto err;
-
-+ INIT_WORK(&gpios[i].work, gpio_work);
-+ gpios[i].jack = jack;
-+
- ret = request_irq(gpio_to_irq(gpios[i].gpio),
- gpio_handler,
- IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-@@ -228,8 +232,13 @@
- if (ret)
- goto err;
-
-- INIT_WORK(&gpios[i].work, gpio_work);
-- gpios[i].jack = jack;
-+#ifdef CONFIG_GPIO_SYSFS
-+ /* Expose GPIO value over sysfs for diagnostic purposes */
-+ gpio_export(gpios[i].gpio, false);
-+#endif
-+
-+ /* Update initial jack status */
-+ snd_soc_jack_gpio_detect(&gpios[i]);
- }
-
- return 0;
-@@ -258,6 +267,9 @@
- int i;
-
- for (i = 0; i < count; i++) {
-+#ifdef CONFIG_GPIO_SYSFS
-+ gpio_unexport(gpios[i].gpio);
-+#endif
- free_irq(gpio_to_irq(gpios[i].gpio), &gpios[i]);
- gpio_free(gpios[i].gpio);
- gpios[i].jack = NULL;
-Index: linux-2.6.30/arch/arm/configs/at91sam9g10ek_defconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/configs/at91sam9g10ek_defconfig 2011-02-01 16:40:30.197007464 +0100
-@@ -0,0 +1,1523 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30
-+# Mon Oct 19 16:44:23 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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+CONFIG_BLK_DEV_INITRD=y
-+CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+# CONFIG_ARCH_AT91SAM9260 is not set
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+CONFIG_ARCH_AT91SAM9G10=y
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9G10 Board Type
-+#
-+CONFIG_MACH_AT91SAM9G10EK=y
-+
-+#
-+# AT91 Board Options
-+#
-+# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+# CONFIG_AT91_SLOW_CLOCK is not set
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
-+# 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# 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_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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=4
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+# CONFIG_ATMEL_TCLIB is not set
-+CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+CONFIG_EEPROM_93CX6=m
-+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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 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_COMPAT_NET_DEV_OPS=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+# CONFIG_DAVICOM_PHY is not set
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+CONFIG_MII=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+CONFIG_DM9000=y
-+CONFIG_DM9000_DEBUGLEVEL=4
-+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+# CONFIG_LIBERTAS_SPI is not set
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+# CONFIG_USB_ZD1201 is not set
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+CONFIG_INPUT_POLLDEV=m
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-+# 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=y
-+# CONFIG_INPUT_MOUSE is not set
-+# CONFIG_INPUT_JOYSTICK is not set
-+# CONFIG_INPUT_TABLET is not set
-+CONFIG_INPUT_TOUCHSCREEN=y
-+CONFIG_TOUCHSCREEN_ADS7846=y
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_FUJITSU is not set
-+# CONFIG_TOUCHSCREEN_GUNZE is not set
-+# CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-+# CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_INEXIO is not set
-+# CONFIG_TOUCHSCREEN_MK712 is not set
-+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-+# CONFIG_TOUCHSCREEN_TOUCHIT213 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_RAW_DRIVER is not set
-+# CONFIG_TCG_TPM is not set
-+# CONFIG_I2C is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# I2C GPIO expanders:
-+#
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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_MFD_TMIO is not set
-+# CONFIG_MFD_T7L66XB is not set
-+# CONFIG_MFD_TC6387XB is not set
-+# CONFIG_MFD_TC6393XB is not set
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB is not set
-+
-+#
-+# Graphics support
-+#
-+# CONFIG_VGASTATE is not set
-+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# CONFIG_FB_DDC is not set
-+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-+# CONFIG_FB_SYS_FILLRECT is not set
-+# CONFIG_FB_SYS_COPYAREA is not set
-+# CONFIG_FB_SYS_IMAGEBLIT is not set
-+# CONFIG_FB_FOREIGN_ENDIAN is not set
-+# CONFIG_FB_SYS_FOPS is not set
-+# CONFIG_FB_SVGALIB is not set
-+# CONFIG_FB_MACMODES is not set
-+# CONFIG_FB_BACKLIGHT is not set
-+# CONFIG_FB_MODE_HELPERS is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_S1D15605 is not set
-+# CONFIG_FB_S1D13XXX is not set
-+CONFIG_FB_ATMEL=y
-+# CONFIG_FB_ATMEL_STN is not set
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+CONFIG_BACKLIGHT_ATMEL_LCDC=y
-+# CONFIG_BACKLIGHT_GENERIC 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_FRAMEBUFFER_CONSOLE is not set
-+# CONFIG_LOGO is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+# CONFIG_SND_ATMEL_AC97C is not set
-+CONFIG_SND_SPI=y
-+CONFIG_SND_AT73C213=y
-+CONFIG_SND_AT73C213_TARGET_BITRATE=48000
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+# CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+# CONFIG_USB_ARCH_HAS_EHCI is not set
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_ATMEL_USBA is not set
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+# CONFIG_USB_GADGET_DUALSPEED is not set
-+CONFIG_USB_ZERO=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
-+CONFIG_USB_FILE_STORAGE=m
-+# CONFIG_USB_FILE_STORAGE_TEST is not set
-+CONFIG_USB_G_SERIAL=m
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=m
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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 is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+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 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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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=y
-+# CONFIG_DLM is not set
-+
-+#
-+# Kernel hacking
-+#
-+# CONFIG_PRINTK_TIME is not set
-+CONFIG_ENABLE_WARN_DEPRECATED=y
-+CONFIG_ENABLE_MUST_CHECK=y
-+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 is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
-+CONFIG_DEBUG_USER=y
-+
-+#
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
-+CONFIG_CRC32=y
-+CONFIG_CRC7=m
-+# CONFIG_LIBCRC32C is not set
-+CONFIG_ZLIB_INFLATE=y
-+CONFIG_ZLIB_DEFLATE=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
-Index: linux-2.6.30/arch/arm/configs/at91sam9xeek_defconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30/arch/arm/configs/at91sam9xeek_defconfig 2011-02-01 16:40:30.200115764 +0100
-@@ -0,0 +1,1487 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.30
-+# Tue Oct 13 12:38:49 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_NO_IOPORT is not set
-+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_ARCH_HAS_ILOG2_U32 is not set
-+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-+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"
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=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 is not set
-+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=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# CONFIG_USER_NS is not set
-+# CONFIG_PID_NS is not set
-+# CONFIG_NET_NS is not set
-+CONFIG_BLK_DEV_INITRD=y
-+CONFIG_INITRAMFS_SOURCE=""
-+CONFIG_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_STRIP_ASM_SYMS=y
-+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
-+CONFIG_VM_EVENT_COUNTERS=y
-+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
-+# 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_LBD is not set
-+# 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 is not set
-+# CONFIG_IOSCHED_CFQ is not set
-+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=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_GEMINI is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_IMX is not set
-+# 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_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MMP 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_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_MSM is not set
-+# CONFIG_ARCH_W90X900 is not set
-+
-+#
-+# Atmel AT91 System-on-Chip
-+#
-+# CONFIG_ARCH_AT91RM9200 is not set
-+CONFIG_ARCH_AT91SAM9260=y
-+# CONFIG_ARCH_AT91SAM9261 is not set
-+# CONFIG_ARCH_AT91SAM9G10 is not set
-+# CONFIG_ARCH_AT91SAM9263 is not set
-+# CONFIG_ARCH_AT91SAM9RL is not set
-+# CONFIG_ARCH_AT91SAM9G20 is not set
-+# CONFIG_ARCH_AT91SAM9G45 is not set
-+# CONFIG_ARCH_AT91CAP9 is not set
-+# CONFIG_ARCH_AT572D940HF is not set
-+# CONFIG_ARCH_AT91X40 is not set
-+CONFIG_AT91_PMC_UNIT=y
-+
-+#
-+# AT91SAM9260 Variants
-+#
-+# CONFIG_ARCH_AT91SAM9260_SAM9XE is not set
-+
-+#
-+# AT91SAM9260 / AT91SAM9XE Board Type
-+#
-+CONFIG_MACH_AT91SAM9260EK=y
-+# CONFIG_MACH_CAM60 is not set
-+# CONFIG_MACH_SAM9_L9260 is not set
-+# CONFIG_MACH_AFEB9260 is not set
-+# CONFIG_MACH_USB_A9260 is not set
-+# CONFIG_MACH_QIL_A9260 is not set
-+# CONFIG_MACH_SBC35_A9260 is not set
-+
-+#
-+# AT91 Board Options
-+#
-+# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
-+# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
-+
-+#
-+# AT91 Feature Selections
-+#
-+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
-+# CONFIG_AT91_SLOW_CLOCK is not set
-+CONFIG_AT91_TIMER_HZ=100
-+CONFIG_AT91_EARLY_DBGU=y
-+# CONFIG_AT91_EARLY_USART0 is not set
-+# CONFIG_AT91_EARLY_USART1 is not set
-+# CONFIG_AT91_EARLY_USART2 is not set
-+# CONFIG_AT91_EARLY_USART3 is not set
-+# CONFIG_AT91_EARLY_USART4 is not set
-+# CONFIG_AT91_EARLY_USART5 is not set
-+
-+#
-+# 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 is not set
-+
-+#
-+# Bus support
-+#
-+# 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 is not set
-+CONFIG_HZ=100
-+CONFIG_AEABI=y
-+CONFIG_OABI_COMPAT=y
-+# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
-+# 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_UNEVICTABLE_LRU=y
-+CONFIG_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+CONFIG_LEDS=y
-+CONFIG_LEDS_CPU=y
-+CONFIG_ALIGNMENT_TRAP=y
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
-+# 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_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE 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 is not set
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_INET_LRO is not set
-+# CONFIG_INET_DIAG is not set
-+# 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_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 is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_WIRELESS=y
-+CONFIG_CFG80211=y
-+# CONFIG_CFG80211_REG_DEBUG is not set
-+# CONFIG_WIRELESS_OLD_REGULATORY is not set
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+CONFIG_LIB80211=y
-+# CONFIG_LIB80211_DEBUG is not set
-+CONFIG_MAC80211=y
-+
-+#
-+# Rate control algorithm selection
-+#
-+CONFIG_MAC80211_RC_MINSTREL=y
-+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-+CONFIG_MAC80211_RC_DEFAULT="minstrel"
-+# CONFIG_MAC80211_MESH is not set
-+# CONFIG_MAC80211_LEDS is not set
-+# CONFIG_MAC80211_DEBUG_MENU is not set
-+# 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_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 is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# 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_DATAFLASH=y
-+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-+# CONFIG_MTD_DATAFLASH_OTP is not set
-+# CONFIG_MTD_M25P80 is not set
-+# 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 is not set
-+# 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_ATMEL=y
-+CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
-+# CONFIG_MTD_NAND_ATMEL_ECC_HW is not set
-+# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set
-+# CONFIG_MTD_NAND_NANDSIM is not set
-+# CONFIG_MTD_NAND_PLATFORM is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND 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 is not set
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_UB is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=4
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+CONFIG_MISC_DEVICES=y
-+CONFIG_ATMEL_TCLIB=y
-+CONFIG_ATMEL_TCB_CLKSRC=y
-+CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
-+CONFIG_ATMEL_SSC=y
-+# CONFIG_ENCLOSURE_SERVICES is not set
-+# CONFIG_C2PORT is not set
-+
-+#
-+# EEPROM support
-+#
-+# CONFIG_EEPROM_AT25 is not set
-+CONFIG_EEPROM_93CX6=m
-+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 is not set
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+# CONFIG_SCSI_SCAN_ASYNC is not set
-+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 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_COMPAT_NET_DEV_OPS is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_MACVLAN is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_VETH is not set
-+CONFIG_PHYLIB=y
-+
-+#
-+# MII PHY device drivers
-+#
-+# CONFIG_MARVELL_PHY is not set
-+CONFIG_DAVICOM_PHY=y
-+# CONFIG_QSEMI_PHY is not set
-+# CONFIG_LXT_PHY is not set
-+# CONFIG_CICADA_PHY is not set
-+# CONFIG_VITESSE_PHY is not set
-+# CONFIG_SMSC_PHY is not set
-+# CONFIG_BROADCOM_PHY is not set
-+# CONFIG_ICPLUS_PHY is not set
-+# CONFIG_REALTEK_PHY is not set
-+# CONFIG_NATIONAL_PHY is not set
-+# CONFIG_STE10XP is not set
-+# CONFIG_LSI_ET1011C_PHY is not set
-+# CONFIG_FIXED_PHY is not set
-+# CONFIG_MDIO_BITBANG is not set
-+CONFIG_NET_ETHERNET=y
-+CONFIG_MII=y
-+CONFIG_MACB=y
-+CONFIG_MACB_TX_SRAM=y
-+# CONFIG_AX88796 is not set
-+# CONFIG_SMC91X is not set
-+# CONFIG_DM9000 is not set
-+# CONFIG_ENC28J60 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_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+
-+#
-+# Wireless LAN
-+#
-+# CONFIG_WLAN_PRE80211 is not set
-+CONFIG_WLAN_80211=y
-+CONFIG_LIBERTAS=m
-+CONFIG_LIBERTAS_USB=m
-+CONFIG_LIBERTAS_SDIO=m
-+# CONFIG_LIBERTAS_SPI is not set
-+# CONFIG_LIBERTAS_DEBUG is not set
-+# CONFIG_LIBERTAS_THINFIRM is not set
-+# CONFIG_AT76C50X_USB is not set
-+CONFIG_USB_ZD1201=m
-+# CONFIG_USB_NET_RNDIS_WLAN is not set
-+CONFIG_RTL8187=m
-+# CONFIG_MAC80211_HWSIM is not set
-+# CONFIG_P54_COMMON is not set
-+CONFIG_AR9170_USB=m
-+# CONFIG_HOSTAP is not set
-+# CONFIG_B43 is not set
-+# CONFIG_B43LEGACY is not set
-+CONFIG_ZD1211RW=m
-+# CONFIG_ZD1211RW_DEBUG is not set
-+CONFIG_RT2X00=m
-+CONFIG_RT2500USB=m
-+CONFIG_RT73USB=m
-+CONFIG_RT2X00_LIB_USB=m
-+CONFIG_RT2X00_LIB=m
-+CONFIG_RT2X00_LIB_FIRMWARE=y
-+CONFIG_RT2X00_LIB_CRYPTO=y
-+CONFIG_RT2X00_LIB_RFKILL=y
-+CONFIG_RT2X00_LIB_LEDS=y
-+# CONFIG_RT2X00_DEBUG is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_WAN is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+CONFIG_INPUT_POLLDEV=m
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
-+# 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=y
-+# CONFIG_INPUT_MOUSE 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=y
-+CONFIG_SERIO_SERPORT=y
-+# CONFIG_SERIO_RAW 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_ATMEL=y
-+CONFIG_SERIAL_ATMEL_CONSOLE=y
-+CONFIG_SERIAL_ATMEL_PDC=y
-+# CONFIG_SERIAL_ATMEL_TTYAT is not set
-+# CONFIG_SERIAL_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+CONFIG_LEGACY_PTYS=y
-+CONFIG_LEGACY_PTY_COUNT=4
-+# CONFIG_IPMI_HANDLER is not set
-+CONFIG_HW_RANDOM=y
-+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_RAW_DRIVER is not set
-+# CONFIG_TCG_TPM is not set
-+# CONFIG_I2C is not set
-+CONFIG_SPI=y
-+CONFIG_SPI_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_ATMEL=y
-+# CONFIG_SPI_BITBANG is not set
-+# CONFIG_SPI_GPIO is not set
-+
-+#
-+# SPI Protocol Masters
-+#
-+CONFIG_SPI_SPIDEV=y
-+# CONFIG_SPI_TLE62X0 is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+# CONFIG_GPIO_SYSFS is not set
-+
-+#
-+# Memory mapped GPIO expanders:
-+#
-+
-+#
-+# I2C GPIO expanders:
-+#
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# 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_MFD_TMIO is not set
-+# CONFIG_MFD_T7L66XB is not set
-+# CONFIG_MFD_TC6387XB is not set
-+# CONFIG_MFD_TC6393XB is not set
-+
-+#
-+# Multimedia devices
-+#
-+
-+#
-+# Multimedia core support
-+#
-+# CONFIG_VIDEO_DEV is not set
-+# CONFIG_DVB_CORE is not set
-+# CONFIG_VIDEO_MEDIA is not set
-+
-+#
-+# Multimedia drivers
-+#
-+# CONFIG_DAB 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=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=m
-+CONFIG_SND_RAWMIDI=m
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_SEQUENCER_OSS is not set
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+
-+#
-+# Atmel devices (AVR32 and AT91)
-+#
-+# CONFIG_SND_ATMEL_AC97C is not set
-+CONFIG_SND_SPI=y
-+CONFIG_SND_AT73C213=y
-+CONFIG_SND_AT73C213_TARGET_BITRATE=48000
-+CONFIG_SND_USB=y
-+CONFIG_SND_USB_AUDIO=m
-+# CONFIG_SND_USB_CAIAQ is not set
-+# CONFIG_SND_SOC is not set
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+# CONFIG_USB_HID is not set
-+# CONFIG_HID_PID is not set
-+
-+#
-+# Special HID drivers
-+#
-+CONFIG_USB_SUPPORT=y
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
-+# CONFIG_USB_ARCH_HAS_EHCI is not set
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_SUSPEND is not set
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_MON is not set
-+# CONFIG_USB_WUSB is not set
-+# CONFIG_USB_WUSB_CBAF is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_C67X00_HCD is not set
-+# CONFIG_USB_OXU210HP_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
-+# CONFIG_USB_ISP1760_HCD is not set
-+CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-+# CONFIG_USB_SL811_HCD is not set
-+# CONFIG_USB_R8A66597_HCD is not set
-+# CONFIG_USB_HWA_HCD is not set
-+# CONFIG_USB_MUSB_HDRC is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_WDM is not set
-+# CONFIG_USB_TMC is not set
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=y
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_USBAT is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_SDDR55 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_STORAGE_ALAUDA is not set
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+# CONFIG_USB_STORAGE_KARMA is not set
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_MICROTEK is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_EMI62 is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_ADUTUX is not set
-+# CONFIG_USB_SEVSEG is not set
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_LEGOTOWER is not set
-+# CONFIG_USB_LCD is not set
-+# CONFIG_USB_BERRY_CHARGE is not set
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_FTDI_ELAN is not set
-+# CONFIG_USB_APPLEDISPLAY is not set
-+# CONFIG_USB_LD is not set
-+# CONFIG_USB_TRANCEVIBRATOR is not set
-+# CONFIG_USB_IOWARRIOR is not set
-+# CONFIG_USB_TEST is not set
-+# CONFIG_USB_ISIGHTFW is not set
-+# CONFIG_USB_VST is not set
-+CONFIG_USB_GADGET=y
-+# CONFIG_USB_GADGET_DEBUG_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=2
-+CONFIG_USB_GADGET_SELECTED=y
-+CONFIG_USB_GADGET_AT91=y
-+CONFIG_USB_AT91=y
-+# CONFIG_USB_GADGET_ATMEL_USBA is not set
-+# CONFIG_USB_GADGET_FSL_USB2 is not set
-+# CONFIG_USB_GADGET_LH7A40X is not set
-+# CONFIG_USB_GADGET_OMAP is not set
-+# CONFIG_USB_GADGET_PXA25X is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C2410 is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+# CONFIG_USB_GADGET_M66592 is not set
-+# CONFIG_USB_GADGET_AMD5536UDC is not set
-+# CONFIG_USB_GADGET_FSL_QE is not set
-+# CONFIG_USB_GADGET_CI13XXX is not set
-+# CONFIG_USB_GADGET_NET2280 is not set
-+# CONFIG_USB_GADGET_GOKU is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+# CONFIG_USB_GADGET_DUALSPEED is not set
-+CONFIG_USB_ZERO=m
-+CONFIG_USB_ETH=m
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_GADGETFS is not set
-+CONFIG_USB_FILE_STORAGE=m
-+# CONFIG_USB_FILE_STORAGE_TEST is not set
-+CONFIG_USB_G_SERIAL=m
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_CDC_COMPOSITE=m
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+# CONFIG_MMC_UNSAFE_RESUME is not set
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+CONFIG_SDIO_UART=m
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+CONFIG_MMC_AT91=y
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+# CONFIG_MEMSTICK is not set
-+# CONFIG_ACCESSIBILITY is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_DAC124S085 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+CONFIG_LEDS_TRIGGER_GPIO=y
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+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
-+
-+#
-+# SPI RTC drivers
-+#
-+# CONFIG_RTC_DRV_M41T94 is not set
-+# CONFIG_RTC_DRV_DS1305 is not set
-+# CONFIG_RTC_DRV_DS1390 is not set
-+# CONFIG_RTC_DRV_MAX6902 is not set
-+# CONFIG_RTC_DRV_R9701 is not set
-+# CONFIG_RTC_DRV_RS5C348 is not set
-+# CONFIG_RTC_DRV_DS3234 is not set
-+
-+#
-+# 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_AT91SAM9=y
-+CONFIG_RTC_DRV_AT91SAM9_RTT=0
-+CONFIG_RTC_DRV_AT91SAM9_GPBR=0
-+# 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 is not set
-+# CONFIG_EXT4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+CONFIG_FILE_LOCKING=y
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+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 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=y
-+# 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=m
-+CONFIG_SQUASHFS=m
-+CONFIG_SQUASHFS_EMBEDDED=y
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_NFS_V4 is not set
-+# CONFIG_NFSD is not set
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=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 is not set
-+# CONFIG_CIFS 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=y
-+# 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 is not set
-+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=y
-+# CONFIG_DLM is not set
-+
-+#
-+# Kernel hacking
-+#
-+# CONFIG_PRINTK_TIME is not set
-+CONFIG_ENABLE_WARN_DEPRECATED=y
-+CONFIG_ENABLE_MUST_CHECK=y
-+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 is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+
-+#
-+# Tracers
-+#
-+# CONFIG_FUNCTION_TRACER is not set
-+# CONFIG_IRQSOFF_TRACER is not set
-+# CONFIG_SCHED_TRACER is not set
-+# CONFIG_CONTEXT_SWITCH_TRACER is not set
-+# CONFIG_EVENT_TRACER is not set
-+# CONFIG_BOOT_TRACER is not set
-+# CONFIG_TRACE_BRANCH_PROFILING 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_ARM_UNWIND=y
-+CONFIG_DEBUG_USER=y
-+
-+#
-+# 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_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 is not set
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=y
-+# 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 is not set
-+# 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 is not set
-+# 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=y
-+# CONFIG_CRYPTO_ANUBIS is not set
-+CONFIG_CRYPTO_ARC4=y
-+# 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 is not set
-+# 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 is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+# CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
-+# CONFIG_CRC_T10DIF is not set
-+CONFIG_CRC_ITU_T=m
-+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_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_IOPORT=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
diff --git a/recipes/linux/linux-2.6.30/ronetix-pm9g45/defconfig b/recipes/linux/linux-2.6.30/ronetix-pm9g45/defconfig
index 5612f45..e71bcd8 100644
--- a/recipes/linux/linux-2.6.30/ronetix-pm9g45/defconfig
+++ b/recipes/linux/linux-2.6.30/ronetix-pm9g45/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.30.10
-# Wed Feb 2 12:51:47 2011
+# Linux kernel version: 2.6.30
+# Wed Jun 15 14:53:04 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -67,7 +67,7 @@ CONFIG_NAMESPACES=y
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
@@ -186,6 +186,7 @@ CONFIG_ARCH_AT91=y
# CONFIG_ARCH_AT91SAM9RL is not set
# CONFIG_ARCH_AT91SAM9G20 is not set
CONFIG_ARCH_AT91SAM9G45=y
+# CONFIG_ARCH_AT91SAM9M10 is not set
# CONFIG_ARCH_AT91CAP9 is not set
# CONFIG_ARCH_AT572D940HF is not set
# CONFIG_ARCH_AT91X40 is not set
@@ -196,6 +197,11 @@ CONFIG_AT91_PMC_UNIT=y
#
# CONFIG_MACH_AT91SAM9G45EKES is not set
CONFIG_MACH_PM9G45=y
+CONFIG_MACH_BB9G45_V1_0=y
+# CONFIG_MACH_BB9263_V1_1 is not set
+# CONFIG_MACH_BB9G45_USB_OTG is not set
+# CONFIG_MACH_BB9G45_USB_HOST is not set
+CONFIG_MACH_BB9G45_USB_DEVICE=y
# CONFIG_MACH_PM9G45_V1_1 is not set
CONFIG_MACH_PM9G45_V1_2=y
CONFIG_AUTO_VRAM_SIZE=y
@@ -210,7 +216,7 @@ CONFIG_PM9G45_LCD_GATW70SN8H1E0=y
#
# AT91 Board Options
#
-CONFIG_MTD_AT91_DATAFLASH_CARD=y
+# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set
#
@@ -269,9 +275,8 @@ CONFIG_AT91_CF=y
#
# Kernel Features
#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
+# 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
@@ -280,7 +285,7 @@ CONFIG_PAGE_OFFSET=0xC0000000
# CONFIG_PREEMPT is not set
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
@@ -299,7 +304,6 @@ CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_LEDS=y
CONFIG_LEDS_CPU=y
CONFIG_ALIGNMENT_TRAP=y
@@ -309,7 +313,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" debug "
+CONFIG_CMDLINE="mem=64M fbcon=rotate:3 root=/dev/mtdblock4 rw mtdparts=atmel_nand:128k(bootstrap)ro,256k(uboot)ro,1664k(env),2M(linux),-(root) rootfstype=jffs2"
# CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set
@@ -325,6 +329,9 @@ CONFIG_CMDLINE=" debug "
#
# 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
#
@@ -354,10 +361,7 @@ CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
+# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
@@ -408,7 +412,27 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
-# CONFIG_WIRELESS is not set
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=y
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=y
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+# CONFIG_MAC80211_MESH is not set
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
@@ -481,9 +505,7 @@ CONFIG_MTD_CFI_I2=y
#
# Self-contained MTD device drivers
#
-CONFIG_MTD_DATAFLASH=y
-CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
-# CONFIG_MTD_DATAFLASH_OTP is not set
+# CONFIG_MTD_DATAFLASH is not set
# CONFIG_MTD_M25P80 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
@@ -544,14 +566,18 @@ CONFIG_MISC_DEVICES=y
CONFIG_ATMEL_TCLIB=y
CONFIG_ATMEL_TCB_CLKSRC=y
CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
+# CONFIG_ICS932S401 is not set
CONFIG_ATMEL_SSC=y
# 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_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_93CX6 is not set
CONFIG_HAVE_IDE=y
CONFIG_IDE=y
@@ -675,7 +701,31 @@ CONFIG_MACB=y
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_LIBERTAS=y
+# CONFIG_LIBERTAS_USB is not set
+# CONFIG_LIBERTAS_CS is not set
+CONFIG_LIBERTAS_SDIO=y
+CONFIG_LIBERTAS_SPI=y
+CONFIG_LIBERTAS_DEBUG=y
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_ATMEL is not set
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_AR9170_USB is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+# CONFIG_HERMES is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -710,11 +760,11 @@ CONFIG_INPUT=y
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
CONFIG_INPUT_JOYDEV=y
CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=y
+# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
@@ -726,7 +776,7 @@ CONFIG_KEYBOARD_ATKBD=y
# 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_KEYBOARD_GPIO=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
@@ -743,8 +793,9 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
# CONFIG_TOUCHSCREEN_AD7879 is not set
# CONFIG_TOUCHSCREEN_FUJITSU is not set
@@ -757,10 +808,10 @@ CONFIG_TOUCHSCREEN_ADS7846=y
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_ATMEL_TSADCC is not set
-# CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_TOUCHSCREEN_ATMEL_TSADCC=y
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_INPUT_MISC is not set
#
@@ -816,9 +867,51 @@ CONFIG_HW_RANDOM=y
# CONFIG_IPWIRELESS is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
-# CONFIG_I2C 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
+# CONFIG_I2C_TINY_USB 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_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_I2C_DEBUG_CORE=y
+# CONFIG_I2C_DEBUG_ALGO is not set
+CONFIG_I2C_DEBUG_BUS=y
+CONFIG_I2C_DEBUG_CHIP=y
CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
+# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
@@ -845,6 +938,9 @@ CONFIG_GPIOLIB=y
#
# I2C GPIO expanders:
#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
#
# PCI GPIO expanders:
@@ -861,6 +957,7 @@ CONFIG_W1=y
# 1-wire Bus Masters
#
# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
# CONFIG_W1_MASTER_DS1WM is not set
CONFIG_W1_MASTER_GPIO=y
@@ -869,12 +966,74 @@ CONFIG_W1_MASTER_GPIO=y
#
# CONFIG_W1_SLAVE_THERM is not set
# CONFIG_W1_SLAVE_SMEM is not set
-# CONFIG_W1_SLAVE_DS2431 is not set
+CONFIG_W1_SLAVE_DS2431=y
# CONFIG_W1_SLAVE_DS2433 is not set
# CONFIG_W1_SLAVE_DS2760 is not set
# CONFIG_W1_SLAVE_BQ27000 is not set
# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_THERMAL is not set
# CONFIG_THERMAL_HWMON is not set
# CONFIG_WATCHDOG is not set
@@ -893,11 +1052,16 @@ CONFIG_SSB_POSSIBLE=y
# CONFIG_MFD_ASIC3 is not set
# CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set
-# CONFIG_UCB1400_CORE 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
#
# Multimedia devices
@@ -919,7 +1083,7 @@ CONFIG_SSB_POSSIBLE=y
# Graphics support
#
# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
@@ -949,7 +1113,16 @@ CONFIG_FB_ATMEL=y
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_ATMEL_LCDC=y
+# CONFIG_BACKLIGHT_GENERIC is not set
#
# Display device support
@@ -964,41 +1137,65 @@ CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
CONFIG_FONT_8x16=y
-# CONFIG_LOGO is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=y
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
-# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SEQUENCER_OSS is not set
+CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DRIVERS is not set
-# CONFIG_SND_ARM is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_VERBOSE=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_ARM=y
#
# Atmel devices (AVR32 and AT91)
#
-CONFIG_SND_ATMEL_AC97C=y
-# CONFIG_SND_SPI is not set
+# CONFIG_SND_ATMEL_AC97C is not set
+CONFIG_SND_SPI=y
+# CONFIG_SND_AT73C213 is not set
# CONFIG_SND_USB is not set
# CONFIG_SND_PCMCIA is not set
-# CONFIG_SND_SOC is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_ATMEL_SOC=y
+CONFIG_SND_ATMEL_SOC_SSC=y
+CONFIG_SND_AT91_SOC_SAM9G20_WM8731=y
+CONFIG_SND_SOC_I2C_AND_SPI=y
+# CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_WM8731=y
# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_DEBUG=y
@@ -1046,17 +1243,17 @@ CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
+CONFIG_USB_DEBUG=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
-# CONFIG_USB_MON is not set
+CONFIG_USB_MON=y
# CONFIG_USB_WUSB is not set
# CONFIG_USB_WUSB_CBAF is not set
@@ -1065,8 +1262,8 @@ CONFIG_USB_DEVICEFS=y
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
@@ -1083,7 +1280,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
#
# USB Device Class drivers
#
-# CONFIG_USB_ACM is not set
+CONFIG_USB_ACM=y
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set
@@ -1119,7 +1316,9 @@ CONFIG_USB_STORAGE=y
#
# USB port drivers
#
-# CONFIG_USB_SERIAL is not set
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=y
#
# USB Miscellaneous drivers
@@ -1173,7 +1372,7 @@ CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ETH is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
-CONFIG_USB_G_SERIAL=y
+CONFIG_USB_SERIAL=y
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
@@ -1192,7 +1391,7 @@ CONFIG_MMC=y
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
+CONFIG_SDIO_UART=y
# CONFIG_MMC_TEST is not set
#
@@ -1211,9 +1410,13 @@ CONFIG_LEDS_CLASS=y
#
# LED drivers
#
+# CONFIG_LEDS_PCA9532 is not set
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_GPIO_PLATFORM=y
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_BD2802 is not set
#
# LED Triggers
@@ -1245,6 +1448,23 @@ CONFIG_RTC_INTF_DEV=y
# 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
+
+#
# SPI RTC drivers
#
# CONFIG_RTC_DRV_M41T94 is not set
@@ -1304,10 +1524,10 @@ CONFIG_DMA_ENGINE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
-CONFIG_FILE_LOCKING=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
@@ -1371,7 +1591,9 @@ CONFIG_JFFS2_RTIME=y
CONFIG_JFFS2_CMODE_PRIORITY=y
# CONFIG_JFFS2_CMODE_SIZE is not set
# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
# CONFIG_CRAMFS is not set
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
@@ -1388,13 +1610,9 @@ CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
-CONFIG_ROOT_NFS=y
-CONFIG_NFSD=y
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
@@ -1455,7 +1673,7 @@ CONFIG_NLS_ISO8859_1=y
#
# Kernel hacking
#
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
@@ -1526,7 +1744,7 @@ CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_ARM_UNWIND=y
CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_LL is not set
@@ -1642,9 +1860,9 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
-# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
+CONFIG_CRC7=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
diff --git a/recipes/linux/linux_2.6.30.bb b/recipes/linux/linux_2.6.30.bb
index a49246c..f979c19 100644
--- a/recipes/linux/linux_2.6.30.bb
+++ b/recipes/linux/linux_2.6.30.bb
@@ -78,27 +78,33 @@ do_apply_at91_exp_patch () {
done
}
-
SRC_URI_ronetix-pm9g45 = " \
${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${PV}.10.bz2;apply=yes;name=stablepatch \
- http://download.ronetix.info/boards/linux/kernel/2.6.30/2.6.30-at91.patch.gz;apply=yes \
- file://2.6.30-at91-exp.patch \
+ http://maxim.org.za/AT91RM9200/2.6/2.6.30-at91.patch.gz;apply=yes;name=at91patch \
+ ftp://www.at91.com/pub/buildroot/2.6.30-exp.2.patch.bz2;apply=yes;name=at91exp2 \
file://0001-ads7846-.c-and-.h-add-swap_xy.patch \
- file://0002-add-pm9g45-number-in-mach-types.patch \
- file://0003-print-some-more-info-from-atmel_nand.c.patch \
- file://0004-add-newline-at-the-end-of-uncorrectable-error.patch \
- file://0005-Add-CompactFlash-to-at91sam9g45-architecture.patch \
- file://0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch \
- file://0007-add-pm9g45-board.patch \
- file://0008-pm9g45-default-configuration-files.patch \
- file://0009-add-float-flags-in-Makefile.patch \
- file://0010-conditional-compile-if-DEDICATED_VRAM.patch \
- file://0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch \
- file://defconfig"
-
-# http://download.ronetix.info/boards/linux/kernel/2.6.30/
-
+ file://0002-print-some-more-info-from-atmel_nand.c.patch \
+ file://0003-add-newline-at-the-end-of-uncorrectable-error.patch \
+ file://0004-Add-CompactFlash-to-at91sam9g45-architecture.patch \
+ file://0005-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch \
+ file://0006-add-board-pm9g45.patch \
+ file://0007-pm9g45-default-configuration-files.patch \
+ file://0008-add-float-flags-in-Makefile.patch \
+ file://0009-conditional-compile-if-DEDICATED_VRAM.patch \
+ file://0010-add-pm9g45-board-version-1.2-and-adjust-memory-selec.patch \
+ file://0011-enable-USB-Device-with-On-the-go-ability.patch \
+ file://0012-one-more-update-of-mach-types.patch \
+ file://0013-sam9g45-UHSDP-add-debug-info.patch \
+ file://0014-A-mix-of-changes-FIXME-to-choose-a-base-board-each-b.patch \
+ file://0015-Selects-CompactFlash-only-on-BB9263-v1.1-add-a-FIX-m.patch \
+ file://0016-enable-GAT.-LCD-backlight-capabilities.patch \
+ file://0017-pm9g45-change-GAT.-color-depth-and-wiring-mode.patch \
+ file://0018-RGB_BGR-fixes-of-LCD-on-bb9g45.patch \
+ file://0019-bb9g45-sound-now-works.patch \
+ file://0020-input-atmel_tsadcc-introduce-changes-needed-for-at91.patch \
+ file://0021-make-touchscreen-on-EB9G45-works.patch \
+ file://0022-bb9g45-USB-connector-J3-to-act-as-device.patch \
+ file://defconfig"
SRC_URI_append_mpc8315e-rdb = " file://mpc8315erdb-add-msi-to-dts.patch"
--
1.7.0.4
More information about the Openembedded-devel
mailing list