summaryrefslogtreecommitdiff
path: root/openembedded
diff options
context:
space:
mode:
authorMatthew Allum <mallum@openedhand.com>2006-07-21 09:16:05 +0000
committerMatthew Allum <mallum@openedhand.com>2006-07-21 09:16:05 +0000
commit62e2fd845deab20b6dae588409b7f6f1ed7617f7 (patch)
tree276e3281c6da9371ccfae4d54bb98018fc8bab7a /openembedded
parentf1f7b603e03d311530993ec224da034ea5165ba6 (diff)
downloadopenembedded-core-62e2fd845deab20b6dae588409b7f6f1ed7617f7.tar.gz
openembedded-core-62e2fd845deab20b6dae588409b7f6f1ed7617f7.tar.bz2
openembedded-core-62e2fd845deab20b6dae588409b7f6f1ed7617f7.tar.xz
openembedded-core-62e2fd845deab20b6dae588409b7f6f1ed7617f7.zip
Add initial cmx270 2.6.17 kernel
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@528 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'openembedded')
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/add_2700g_plat-r0.patch126
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/cm_x2xx_mbx.patch1566
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/defconfig1169
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/mach-types1112
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes-r0.patch599
-rw-r--r--openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes1-r0.patch15
-rw-r--r--openembedded/packages/linux/linux-cmx270_2.6.17.bb40
7 files changed, 4627 insertions, 0 deletions
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/add_2700g_plat-r0.patch b/openembedded/packages/linux/linux-cmx270-2.6.17/add_2700g_plat-r0.patch
new file mode 100644
index 000000000..b4a33e2cf
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/add_2700g_plat-r0.patch
@@ -0,0 +1,126 @@
+Index: linux-2.6.17/arch/arm/mach-pxa/cm-x270.c
+===================================================================
+--- linux-2.6.17.orig/arch/arm/mach-pxa/cm-x270.c 2006-07-18 15:40:10.000000000 +0100
++++ linux-2.6.17/arch/arm/mach-pxa/cm-x270.c 2006-07-20 20:25:22.000000000 +0100
+@@ -11,6 +11,7 @@
+ #include <linux/pm.h>
+ #include <linux/fb.h>
+ #include <linux/rtc-v3020.h>
++#include <linux/mbxfb.h>
+
+ #include <asm/types.h>
+ #include <asm/setup.h>
+@@ -396,10 +397,113 @@
+ .resource = dm9000_resources,
+ };
+
++/* 2700G graphics */
++static u64 fb_dma_mask = ~(u64)0;
++
++static struct resource cmx270_2700G_resource[] = {
++ /* frame buffer memory including ODFB and External SDRAM */
++ [0] = {
++ .start = MARATHON_PHYS,
++ .end = MARATHON_PHYS + 0x02000000,
++ .flags = IORESOURCE_MEM,
++ },
++ /* Marathon registers */
++ [1] = {
++ .start = MARATHON_PHYS + 0x03fe0000,
++ .end = MARATHON_PHYS + 0x03ffffff,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static unsigned long save_lcd_regs[10];
++
++/* if 2700G is used, disable PCI throttle */
++#define LB_TROTTLE_OFF (PXA_CS1_PHYS | (1 << 25))
++#define LB_TROTTLE_MAX (PXA_CS1_PHYS | (1 << 25) | (1 << 22))
++static int cmx270_marathon_probe(struct fb_info *fb)
++{
++ volatile unsigned long *cpld;
++
++ cpld = (volatile unsigned long*)ioremap(LB_TROTTLE_OFF, 4);
++ if ( !cpld ) {
++ return -ENODEV;
++ }
++ *cpld = 0;
++ iounmap((void*)cpld);
++
++ /* save PXA-270 pin settings before enabling 2700G */
++ save_lcd_regs[0] = GPDR1;
++ save_lcd_regs[1] = GPDR2;
++ save_lcd_regs[2] = GAFR1_U;
++ save_lcd_regs[3] = GAFR2_L;
++ save_lcd_regs[4] = GAFR2_U;
++
++ /* Disable PXA-270 on-chip controller driving pins */
++ GPDR1 &= ~(0xfc000000);
++ GPDR2 &= ~(0x00c03fff);
++ GAFR1_U &= ~(0xfff00000);
++ GAFR2_L &= ~(0x0fffffff);
++ GAFR2_U &= ~(0x0000f000);
++ return 0;
++}
++
++static int cmx270_marathon_remove(struct fb_info *fb)
++{
++ volatile unsigned long *cpld;
++ cpld = (volatile unsigned long*)ioremap(LB_TROTTLE_MAX, 4);
++
++ if ( !cpld ) {
++ return -ENODEV;
++ }
++ *cpld = 0;
++ iounmap((void*)cpld);
++
++ GPDR1 = save_lcd_regs[0];
++ GPDR2 = save_lcd_regs[1];
++ GAFR1_U = save_lcd_regs[2];
++ GAFR2_L = save_lcd_regs[3];
++ GAFR2_U = save_lcd_regs[4];
++ return 0;
++}
++
++static struct mbxfb_platform_data cmx270_2700G_data = {
++ .xres = {
++ .min = 240,
++ .max = 1200,
++ .defval = 640,
++ },
++ .yres = {
++ .min = 240,
++ .max = 1200,
++ .defval = 480,
++ },
++ .bpp = {
++ .min = 16,
++ .max = 32,
++ .defval = 16,
++ },
++ .memsize = 8*1024*1024,
++ .probe = cmx270_marathon_probe,
++ .remove = cmx270_marathon_remove,
++};
++
++static struct platform_device cmx270_2700G = {
++ .name = "mbx-fb",
++ .dev = {
++ .platform_data = &cmx270_2700G_data,
++ .dma_mask = &fb_dma_mask,
++ .coherent_dma_mask = 0xffffffff,
++ },
++ .num_resources = ARRAY_SIZE(cmx270_2700G_resource),
++ .resource = cmx270_2700G_resource,
++ .id = -1,
++};
++
+ static struct platform_device *platform_devices[] __initdata = {\
+ &cmx270_audio_device,
+ &v3020_rtc_device,
+ &dm9000_device,
++ &cmx270_2700G,
+ };
+
+ static int cmx270_ohci_init(struct device *dev)
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/cm_x2xx_mbx.patch b/openembedded/packages/linux/linux-cmx270-2.6.17/cm_x2xx_mbx.patch
new file mode 100644
index 000000000..d33f4522f
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/cm_x2xx_mbx.patch
@@ -0,0 +1,1566 @@
+ drivers/video/Kconfig | 10 +
+ drivers/video/Makefile | 1
+ drivers/video/mbx/Makefile | 3
+ drivers/video/mbx/mbxfb.c | 646 ++++++++++++++++++++++++++++++++++++++++++
+ drivers/video/mbx/mbxsysfs.c | 129 ++++++++
+ drivers/video/mbx/reg_bits.h | 489 ++++++++++++++++++++++++++++++++
+ drivers/video/mbx/regs.h | 192 ++++++++++++
+ include/linux/mbxfb.h | 28 ++
+ 8 files changed, 1498 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
+index 17de4c8..3f472d4 100644
+--- a/drivers/video/Kconfig
++++ b/drivers/video/Kconfig
+@@ -1518,6 +1518,16 @@ config FB_PXA_PARAMETERS
+
+ <file:Documentation/fb/pxafb.txt> describes the available parameters.
+
++config FB_MBX
++ tristate "2700G LCD framebuffer support"
++ depends on FB && ARCH_PXA
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ ---help---
++
++ If unsure, say N.
++
+ config FB_W100
+ tristate "W100 frame buffer support"
+ depends on FB && PXA_SHARPSL
+diff --git a/drivers/video/Makefile b/drivers/video/Makefile
+index c335e9b..eabb5be 100644
+--- a/drivers/video/Makefile
++++ b/drivers/video/Makefile
+@@ -38,6 +38,7 @@ obj-$(CONFIG_FB_SIS) += sis/
+ obj-$(CONFIG_FB_KYRO) += kyro/
+ obj-$(CONFIG_FB_SAVAGE) += savage/
+ obj-$(CONFIG_FB_GEODE) += geode/
++obj-$(CONFIG_FB_MBX) += mbx/
+ obj-$(CONFIG_FB_I810) += vgastate.o
+ obj-$(CONFIG_FB_NEOMAGIC) += neofb.o vgastate.o
+ obj-$(CONFIG_FB_VIRGE) += virgefb.o
+diff --git a/drivers/video/mbx/Makefile b/drivers/video/mbx/Makefile
+new file mode 100644
+index 0000000..ad042f5
+--- /dev/null
++++ b/drivers/video/mbx/Makefile
+@@ -0,0 +1,3 @@
++# Makefile for the 2700G controller driver.
++
++obj-$(CONFIG_FB_MBX) += mbxfb.o
+diff --git a/drivers/video/mbx/mbxfb.c b/drivers/video/mbx/mbxfb.c
+new file mode 100644
+index 0000000..fcf164f
+--- /dev/null
++++ b/drivers/video/mbx/mbxfb.c
+@@ -0,0 +1,646 @@
++/*
++ * linux/drivers/video/mbx/mbxfb.c
++ *
++ * Copyright (C) 2006 Compulab, Ltd.
++ * Mike Rapoport <mike@compulab.co.il>
++ *
++ * Based on pxafb.c
++ *
++ * 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.
++ *
++ * Intel 2700G (Marathon) Graphics Accelerator Frame Buffer Driver
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/fb.h>
++#include <linux/delay.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mbxfb.h>
++
++#include <asm/io.h>
++
++/* use defines from asm-arm/arch-pxa/bitfields.h for now */
++/* review (and maybe rework) all bitfields access later */
++#define UData(Data) ((unsigned long) (Data))
++#define Fld(Size, Shft) (((Size) << 16) + (Shft))
++#define FSize(Field) ((Field) >> 16)
++#define FShft(Field) ((Field) & 0x0000FFFF)
++#define FMsk(Field) (((UData (1) << FSize (Field)) - 1) << FShft (Field))
++#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1)
++#define F1stBit(Field) (UData (1) << FShft (Field))
++
++static unsigned long virt_base_2700;
++#include "regs.h"
++#include "reg_bits.h"
++
++#define MIN_XRES 16
++#define MIN_YRES 16
++#define MAX_XRES 2048
++#define MAX_YRES 2048
++
++/* FIXME: take care of different chip reivsions with different sizes
++ of ODFB */
++#define MEMORY_OFFSET 0x60000
++
++struct mbxfb_info {
++ struct device *dev;
++
++ struct resource *fb_res;
++ struct resource *fb_req;
++
++ struct resource *reg_res;
++ struct resource *reg_req;
++
++ void __iomem *fb_virt_addr;
++ unsigned long fb_phys_addr;
++
++ void __iomem *reg_virt_addr;
++ unsigned long reg_phys_addr;
++
++ int (*platform_probe)(struct fb_info *fb);
++ int (*platform_remove)(struct fb_info *fb);
++};
++
++static struct fb_var_screeninfo mbxfb_default = {
++ .xres = 640,
++ .yres = 480,
++ .xres_virtual = 640,
++ .yres_virtual = 480,
++ .bits_per_pixel = 16,
++ .red = { 11, 5, 0 },
++ .green = { 5, 6, 0 },
++ .blue = { 0, 5, 0 },
++ .activate = FB_ACTIVATE_TEST,
++ .height = -1,
++ .width = -1,
++ .pixclock = 40000,
++ .left_margin = 48,
++ .right_margin = 16,
++ .upper_margin = 33,
++ .lower_margin = 10,
++ .hsync_len = 96,
++ .vsync_len = 2,
++ .vmode = FB_VMODE_NONINTERLACED,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct fb_fix_screeninfo mbxfb_fix = {
++ .id = "MBX",
++ .type = FB_TYPE_PACKED_PIXELS,
++ .visual = FB_VISUAL_TRUECOLOR,
++ .xpanstep = 0,
++ .ypanstep = 0,
++ .ywrapstep = 0,
++ .accel = FB_ACCEL_NONE,
++};
++
++struct pixclock_div {
++ u8 m;
++ u8 n;
++ u8 p;
++};
++
++static unsigned int mbxfb_get_pixclock(unsigned int pixclock_ps, struct pixclock_div *div)
++{
++ u8 m, n, p;
++ unsigned int err = 0;
++ unsigned int min_err = ~0x0;
++ unsigned int clk;
++ unsigned int best_clk = 0;
++ unsigned int ref_clk = 13000; /* FIXME: take from platform data */
++ unsigned int pixclock;
++
++ /* convert pixclock to KHz */
++ pixclock = PICOS2KHZ(pixclock_ps);
++
++ for ( m = 1; m < 64; m++ ) {
++ for ( n = 1; n < 8; n++ ) {
++ for ( p = 0; p < 8; p++ ) {
++ clk = (ref_clk * m) / (n * (1 << p));
++ err = (clk > pixclock) ? (clk - pixclock) :
++ (pixclock - clk);
++ if ( err < min_err ) {
++ min_err = err;
++ best_clk = clk;
++ div->m = m;
++ div->n = n;
++ div->p = p;
++ }
++ }
++ }
++ }
++ return KHZ2PICOS(best_clk);
++}
++
++static int
++mbxfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
++ u_int trans, struct fb_info *info)
++{
++ uint val, ret = 1;
++
++ if ( regno < 255 ) {
++ val = (red & 0xff) << 16;
++ val |= (green & 0xff) << 8;
++ val |= (blue & 0xff) << 0;
++ GPLUT = Gplut_Lutadr(regno) | Gplut_Lutdata(val);
++ udelay(1000);
++ ret = 0;
++ }
++ return ret;
++}
++
++static int mbxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ struct pixclock_div div;
++
++ var->pixclock = mbxfb_get_pixclock(var->pixclock, &div);
++
++ if (var->xres < MIN_XRES)
++ var->xres = MIN_XRES;
++ if (var->yres < MIN_YRES)
++ var->yres = MIN_YRES;
++ if (var->xres > MAX_XRES)
++ var->xres = MAX_XRES;
++ if (var->yres > MAX_YRES)
++ var->yres = MAX_YRES;
++ var->xres_virtual =
++ max(var->xres_virtual, var->xres);
++ var->yres_virtual =
++ max(var->yres_virtual, var->yres);
++
++ switch (var->bits_per_pixel) {
++ /* FIXME: implement 8 bits-per-pixel */
++ case 8:
++ var->bits_per_pixel = 16;
++ case 16:
++ var->green.length = (var->green.length == 5) ? 5 : 6;
++ var->red.length = 5;
++ var->blue.length = 5;
++ var->transp.length = 6 - var->green.length;
++ var->blue.offset = 0;
++ var->green.offset = 5;
++ var->red.offset = 5 + var->green.length;
++ var->transp.offset = (5 + var->red.offset) & 15;
++ break;
++ case 24: /* RGB 888 */
++ case 32: /* RGBA 8888 */
++ var->red.offset = 16;
++ var->red.length = 8;
++ var->green.offset = 8;
++ var->green.length = 8;
++ var->blue.offset = 0;
++ var->blue.length = 8;
++ var->transp.length = var->bits_per_pixel - 24;
++ var->transp.offset = (var->transp.length) ? 24 : 0;
++ break;
++ }
++ var->red.msb_right = 0;
++ var->green.msb_right = 0;
++ var->blue.msb_right = 0;
++ var->transp.msb_right = 0;
++
++ return 0;
++}
++
++static int mbxfb_set_par(struct fb_info *info)
++{
++ struct fb_var_screeninfo *var = &info->var;
++ struct pixclock_div div;
++ ushort hbps, ht, hfps, has;
++ ushort vbps, vt, vfps, vas;
++
++ info->fix.line_length = var->xres_virtual * var->bits_per_pixel / 8;
++
++ /* setup color mode */
++ GSCTRL &= ~(FMsk(GSCTRL_GPIXFMT));
++ /* FIXME: add *WORKING* support for 8-bits per color */
++ if ( info->var.bits_per_pixel == 8 ) {
++ GSCTRL |= GSCTRL_GPIXFMT_INDEXED;
++ GSCTRL |= GSCTRL_LUT_EN;
++ GSCTRL &= ~GSCTRL_GAMMA_EN;
++ info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
++ fb_alloc_cmap(&info->cmap, 1<<info->var.bits_per_pixel, 0);
++ }
++ else {
++ fb_dealloc_cmap(&info->cmap);
++ GSCTRL &= ~GSCTRL_LUT_EN;
++ info->fix.visual = FB_VISUAL_TRUECOLOR;
++ switch ( info->var.bits_per_pixel ) {
++ case 16:
++ if ( info->var.green.length == 5 )
++ GSCTRL |= GSCTRL_GPIXFMT_ARGB1555;
++ else
++ GSCTRL |= GSCTRL_GPIXFMT_RGB565;
++ break;
++ case 24:
++ GSCTRL |= GSCTRL_GPIXFMT_RGB888;
++ break;
++ case 32:
++ GSCTRL |= GSCTRL_GPIXFMT_ARGB8888;
++ break;
++ }
++ }
++
++ /* setup resolution */
++ GSCTRL &= ~(FMsk(GSCTRL_GSWIDTH) | FMsk(GSCTRL_GSHEIGHT));
++ GSCTRL |= Gsctrl_Width(info->var.xres - 1) |
++ Gsctrl_Height(info->var.yres - 1);
++
++ GSADR &= ~(FMsk(GSADR_SRCSTRIDE)); udelay(1000);
++ GSADR |= Gsadr_Srcstride(info->var.xres * info->var.bits_per_pixel / (8 * 16) - 1); udelay(1000);
++
++ /* setup timings */
++ var->pixclock = mbxfb_get_pixclock(info->var.pixclock, &div);
++
++ DISPPLL = Disp_Pll_M(div.m) | Disp_Pll_N(div.n) | Disp_Pll_P(div.p) | DISP_PLL_EN;
++
++ hbps = var->hsync_len;
++ has = hbps + var->left_margin;
++ hfps = has + var->xres;
++ ht = hfps + var->right_margin;
++
++ vbps = var->vsync_len;
++ vas = vbps + var->upper_margin;
++ vfps = vas + var->yres;
++ vt = vfps + var->lower_margin;
++
++ DHT01 = Dht01_Hbps(hbps) | Dht01_Ht(ht);
++ DHT02 = Dht02_Hlbs(has) | Dht02_Has(has);
++ DHT03 = Dht03_Hfps(hfps) | Dht03_Hrbs(hfps);
++ DHDET = Dhdet_Hdes(has) | Dhdet_Hdef(hfps);
++
++ DVT01 = Dvt01_Vbps(vbps) | Dvt01_Vt(vt);
++ DVT02 = Dvt02_Vtbs(vas) | Dvt02_Vas(vas);
++ DVT03 = Dvt03_Vfps(vfps) | Dvt03_Vbbs(vfps);
++ DVDET = Dvdet_Vdes(vas) | Dvdet_Vdef(vfps);
++ DVECTRL = Dvectrl_Vevent(vfps) | Dvectrl_Vfetch(vbps);
++ DSCTRL |= DSCTRL_SYNCGEN_EN;
++
++ return 0;
++}
++
++static int mbxfb_blank(int blank, struct fb_info *info)
++{
++ switch (blank) {
++ case FB_BLANK_POWERDOWN:
++ case FB_BLANK_VSYNC_SUSPEND:
++ case FB_BLANK_HSYNC_SUSPEND:
++ case FB_BLANK_NORMAL:
++ DSCTRL &= ~DSCTRL_SYNCGEN_EN; udelay(1000);
++ PIXCLK &= ~PIXCLK_EN; udelay(1000);
++ VOVRCLK &= ~VOVRCLK_EN; udelay(1000);
++ break;
++ case FB_BLANK_UNBLANK:
++ DSCTRL |= DSCTRL_SYNCGEN_EN; udelay(1000);
++ PIXCLK |= PIXCLK_EN; udelay(1000);
++ break;
++ }
++ return 0;
++}
++
++static struct fb_ops mbxfb_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = mbxfb_check_var,
++ .fb_set_par = mbxfb_set_par,
++ .fb_setcolreg = mbxfb_setcolreg,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_blank = mbxfb_blank,
++};
++
++/*
++ Enable external SDRAM controller. Assume that all clocks are active
++ by now.
++*/
++static void setup_memc(struct fb_info *fbi)
++{
++ unsigned long tmp;
++
++ /* FIXME: use platfrom specific parameters */
++ /* setup SDRAM controller */
++ LMCFG = LMCFG_LMC_DS | LMCFG_LMC_TS | LMCFG_LMD_TS | LMCFG_LMA_TS;
++ udelay(1000);
++ LMPWR = LMPWR_MC_PWR_ACT;
++ udelay(1000);
++ /* setup SDRAM timings */
++ LMTIM = Lmtim_Tras(7) | Lmtim_Trp(3) | Lmtim_Trcd(3) | Lmtim_Trc(9) |
++ Lmtim_Tdpl(2);
++ udelay(1000);
++ /* setup SDRAM refresh rate */
++ LMREFRESH = 0xc2b;
++ udelay(1000);
++ /* setup SDRAM type parameters */
++ LMTYPE = LMTYPE_CASLAT_3 | LMTYPE_BKSZ_2 | LMTYPE_ROWSZ_11 |
++ LMTYPE_COLSZ_8;
++ udelay(1000);
++ /* enable memory controller */
++ LMPWR = LMPWR_MC_PWR_ACT;
++ udelay(1000);
++
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++ tmp = *(unsigned long*)(virt_base_2700 + MEMORY_OFFSET);
++}
++
++static void enable_clocks(struct fb_info* fbi)
++{
++ /* enable clocks */
++ SYSCLKSRC = SYSCLKSRC_PLL_2; udelay(1000);
++ PIXCLKSRC = PIXCLKSRC_PLL_1; udelay(1000);
++ CLKSLEEP = 0x00000000; udelay(1000);
++ COREPLL = Core_Pll_M(0x17) | Core_Pll_N(0x3) | Core_Pll_P(0x0) | CORE_PLL_EN; udelay(1000);
++ DISPPLL = Disp_Pll_M(0x1b) | Disp_Pll_N(0x7) | Disp_Pll_P(0x1) | DISP_PLL_EN;
++
++ VOVRCLK = 0x00000000; udelay(1000);
++ PIXCLK = PIXCLK_EN; udelay(1000);
++ MEMCLK = MEMCLK_EN; udelay(1000);
++ M24CLK = 0x00000006; udelay(1000);
++ MBXCLK = 0x00000006; udelay(1000);
++ SDCLK = SDCLK_EN; udelay(1000);
++ PIXCLKDIV = 0x00000001; udelay(1000);
++}
++
++static void setup_graphics(struct fb_info* fbi)
++{
++ unsigned long gsctrl;
++
++ gsctrl = GSCTRL_GAMMA_EN | Gsctrl_Width(fbi->var.xres-1) |
++ Gsctrl_Height(fbi->var.yres-1);
++ switch ( fbi->var.bits_per_pixel ) {
++ case 16:
++ if ( fbi->var.green.length == 5 )
++ gsctrl |= GSCTRL_GPIXFMT_ARGB1555;
++ else
++ gsctrl |= GSCTRL_GPIXFMT_RGB565;
++ break;
++ case 24: gsctrl |= GSCTRL_GPIXFMT_RGB888; break;
++ case 32: gsctrl |= GSCTRL_GPIXFMT_ARGB8888; break;
++ }
++
++ GSCTRL = gsctrl; udelay(1000);
++ GBBASE = 0x00000000; udelay(1000);
++ GDRCTRL = 0x00ffffff; udelay(1000);
++ GSCADR = GSCADR_STR_EN | Gscadr_Gbase_Adr(0x6000); udelay(1000);
++ GPLUT = 0x00000000; udelay(1000);
++}
++
++static void setup_display(struct fb_info* fbi)
++{
++ unsigned long dsctrl = 0;
++
++ dsctrl = DSCTRL_BLNK_POL;
++ if ( fbi->var.sync & FB_SYNC_HOR_HIGH_ACT )
++ dsctrl |= DSCTRL_HS_POL;
++ if ( fbi->var.sync & FB_SYNC_VERT_HIGH_ACT )
++ dsctrl |= DSCTRL_VS_POL;
++ DSCTRL = dsctrl; udelay(1000);
++ DMCTRL = 0xd0303010; udelay(1000);
++ DSCTRL |= DSCTRL_SYNCGEN_EN;
++}
++
++static void enable_controller(struct fb_info* fbi)
++{
++ SYSRST = SYSRST_RST;
++ udelay(1000);
++
++ enable_clocks(fbi);
++ setup_memc(fbi);
++ setup_graphics(fbi);
++ setup_display(fbi);
++}
++
++
++#ifdef CONFIG_PM
++/*
++ * Power management hooks. Note that we won't be called from IRQ context,
++ * unlike the blank functions above, so we may sleep.
++ */
++static int mbxfb_suspend(struct platform_device *dev, pm_message_t state)
++{
++ /* make frame buffer memory enter self-refresh mode */
++ LMPWR = LMPWR_MC_PWR_SRM;
++ while ( LMPWRSTAT != LMPWRSTAT_MC_PWR_SRM );
++
++ /* reset the device, since it's initial state is 'mostly sleeping' */
++ SYSRST = SYSRST_RST;
++ return 0;
++}
++
++static int mbxfb_resume(struct platform_device *dev)
++{
++ struct fb_info *fbi = (struct fb_info*)platform_get_drvdata(dev);
++
++ enable_clocks(fbi);
++/* setup_graphics(fbi); */
++/* setup_display(fbi); */
++
++ DSCTRL |= DSCTRL_SYNCGEN_EN;
++ return 0;
++}
++#else
++#define mbxfb_suspend NULL
++#define mbxfb_resume NULL
++#endif
++
++#include "mbxsysfs.c"
++
++#define res_size(_r) (((_r)->end - (_r)->start) + 1)
++
++static int mbxfb_probe(struct platform_device *dev)
++{
++ int ret;
++ struct fb_info *fbi;
++ struct mbxfb_info *mfbi;
++ struct mbxfb_platform_data *pdata;
++
++ dev_dbg(dev, "mbxfb_probe\n");
++
++ fbi = framebuffer_alloc(sizeof(struct mbxfb_info), &dev->dev);
++ if ( fbi == NULL ) {
++ dev_err(&dev->dev, "framebuffer_alloc failed\n");
++ return -ENOMEM;
++ }
++
++ mfbi = fbi->par;
++ pdata = dev->dev.platform_data;
++ if ( pdata->probe )
++ mfbi->platform_probe = pdata->probe;
++ if ( pdata->remove )
++ mfbi->platform_remove = pdata->remove;
++
++ mfbi->fb_res = platform_get_resource(dev, IORESOURCE_MEM, 0);
++ mfbi->reg_res = platform_get_resource(dev, IORESOURCE_MEM, 1);
++
++ if ( !mfbi->fb_res || !mfbi->reg_res ) {
++ dev_err(&dev->dev, "no resources found\n");
++ ret = -ENODEV;
++ goto err1;
++ }
++
++ mfbi->fb_req = request_mem_region(mfbi->fb_res->start,
++ res_size(mfbi->fb_res),
++ dev->name);
++ if ( mfbi->fb_req == NULL ) {
++ dev_err(&dev->dev, "failed to claim framebuffer memory\n");
++ ret = -EINVAL;
++ goto err1;
++ }
++ mfbi->fb_phys_addr = mfbi->fb_res->start;
++
++ mfbi->reg_req = request_mem_region(mfbi->reg_res->start,
++ res_size(mfbi->reg_res),
++ dev->name);
++ if ( mfbi->reg_req == NULL ) {
++ dev_err(&dev->dev, "failed to claim Marathon registers\n");
++ ret = -EINVAL;
++ goto err2;
++ }
++ mfbi->reg_phys_addr = mfbi->reg_res->start;
++
++ mfbi->reg_virt_addr = ioremap_nocache(mfbi->reg_phys_addr,
++ res_size(mfbi->reg_req));
++ if ( !mfbi->reg_virt_addr ) {
++ dev_err(&dev->dev, "failed to ioremap Marathon registers\n");
++ ret = -EINVAL;
++ goto err3;
++ }
++ virt_base_2700 = (unsigned long)mfbi->reg_virt_addr;
++
++ mfbi->fb_virt_addr = ioremap_nocache(mfbi->fb_phys_addr,
++ res_size(mfbi->fb_req));
++ if ( !mfbi->reg_virt_addr ) {
++ dev_err(&dev->dev, "failed to ioremap frame buffer\n");
++ ret = -EINVAL;
++ goto err4;
++ }
++
++ fbi->screen_base = (char __iomem *)(mfbi->fb_virt_addr + 0x60000); /* FIXME: */
++ fbi->screen_size = 8*1024*1024; /* 8 Megs */ /* FIXME: get from platform */
++ fbi->fbops = &mbxfb_ops;
++
++ fbi->var = mbxfb_default;
++ fbi->fix = mbxfb_fix;
++ fbi->fix.smem_start = mfbi->fb_phys_addr + 0x60000;
++ fbi->fix.smem_len = 8*1024*1024;
++ fbi->fix.line_length = 640*2;
++
++ ret = fb_alloc_cmap(&fbi->cmap, 256, 0);
++ if (ret < 0) {
++ dev_err(&dev->dev, "fb_alloc_cmap failed\n");
++ ret = -EINVAL;
++ goto err5;
++ }
++
++ ret = register_framebuffer(fbi);
++ if (ret < 0) {
++ dev_err(&dev->dev, "register_framebuffer failed\n");
++ ret = -EINVAL;
++ goto err6;
++ }
++
++ platform_set_drvdata(dev, fbi);
++
++ printk(KERN_INFO "fb%d: mbx frame buffer device\n", fbi->node);
++
++ if ( mfbi->platform_probe )
++ mfbi->platform_probe(fbi);
++
++ enable_controller(fbi);
++
++ mbxfb_sysfs_register(fbi);
++
++ return 0;
++
++ err6:
++ fb_dealloc_cmap(&fbi->cmap);
++ err5:
++ iounmap(mfbi->fb_virt_addr);
++ err4:
++ iounmap(mfbi->reg_virt_addr);
++ err3:
++ release_mem_region(mfbi->reg_res->start,
++ res_size(mfbi->reg_res));
++ err2:
++ release_mem_region(mfbi->fb_res->start,
++ res_size(mfbi->fb_res));
++ err1:
++ framebuffer_release(fbi);
++
++ return ret;
++}
++
++static int mbxfb_remove(struct platform_device *dev)
++{
++ struct fb_info *fbi = (struct fb_info*)platform_get_drvdata(dev);
++
++ SYSRST = SYSRST_RST;
++ udelay(1000);
++
++ if (fbi) {
++ struct mbxfb_info *mfbi = fbi->par;
++
++ unregister_framebuffer(fbi);
++ if ( mfbi ) {
++ if ( mfbi->platform_remove )
++ mfbi->platform_remove(fbi);
++
++ if ( mfbi->fb_virt_addr )
++ iounmap(mfbi->fb_virt_addr);
++ if ( mfbi->reg_virt_addr )
++ iounmap(mfbi->reg_virt_addr);
++ if ( mfbi->reg_req )
++ release_mem_region(mfbi->reg_req->start,
++ res_size(mfbi->reg_req));
++ if ( mfbi->fb_req )
++ release_mem_region(mfbi->fb_req->start,
++ res_size(mfbi->fb_req));
++ }
++ framebuffer_release(fbi);
++ }
++
++ return 0;
++}
++
++static struct platform_driver mbxfb_driver = {
++ .probe = mbxfb_probe,
++ .remove = mbxfb_remove,
++
++#ifdef CONFIG_PM
++ .suspend = mbxfb_suspend,
++ .resume = mbxfb_resume,
++#endif
++ .driver = {
++ .name = "mbx-fb",
++ },
++};
++
++int __devinit mbxfb_init(void)
++{
++ return platform_driver_register(&mbxfb_driver);
++}
++
++static void __exit mbxfb_exit(void)
++{
++ platform_driver_unregister(&mbxfb_driver);
++}
++
++module_init(mbxfb_init);
++module_exit(mbxfb_exit);
++
++MODULE_DESCRIPTION("loadable framebuffer driver for Marathon device");
++MODULE_AUTHOR("Mike Rapoport, Compulab");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/video/mbx/mbxsysfs.c b/drivers/video/mbx/mbxsysfs.c
+new file mode 100644
+index 0000000..4b9571a
+--- /dev/null
++++ b/drivers/video/mbx/mbxsysfs.c
+@@ -0,0 +1,129 @@
++static ssize_t sysconf_show(struct class_device * subsys, char * buf)
++{
++ char * s = buf;
++
++ s += sprintf(s, "SYSCFG = %08lx\n", SYSCFG);
++ s += sprintf(s, "PFBASE = %08lx\n", PFBASE);
++ s += sprintf(s, "PFCEIL = %08lx\n", PFCEIL);
++ s += sprintf(s, "POLLFLAG = %08lx\n", POLLFLAG);
++ s += sprintf(s, "SYSRST = %08lx\n", SYSRST);
++ return (s - buf);
++}
++
++static ssize_t sysconf_store(struct class_device * subsys, const char * buf, size_t n)
++{
++ return n;
++}
++
++static ssize_t gsctl_show(struct class_device * subsys, char * buf)
++{
++ char * s = buf;
++
++ s += sprintf(s, "GSCTRL = %08lx\n", GSCTRL);
++ s += sprintf(s, "VSCTRL = %08lx\n", VSCTRL);
++ s += sprintf(s, "GBBASE = %08lx\n", GBBASE);
++ s += sprintf(s, "VBBASE = %08lx\n", VBBASE);
++ s += sprintf(s, "GDRCTRL = %08lx\n", GDRCTRL);
++ s += sprintf(s, "VCMSK = %08lx\n", VCMSK);
++ s += sprintf(s, "GSCADR = %08lx\n", GSCADR);
++ s += sprintf(s, "VSCADR = %08lx\n", VSCADR);
++ s += sprintf(s, "VUBASE = %08lx\n", VUBASE);
++ s += sprintf(s, "VVBASE = %08lx\n", VVBASE);
++ s += sprintf(s, "GSADR = %08lx\n", GSADR);
++ s += sprintf(s, "VSADR = %08lx\n", VSADR);
++ s += sprintf(s, "HCCTRL = %08lx\n", HCCTRL);
++ s += sprintf(s, "HCSIZE = %08lx\n", HCSIZE);
++ s += sprintf(s, "HCPOS = %08lx\n", HCPOS);
++ s += sprintf(s, "HCBADR = %08lx\n", HCBADR);
++ s += sprintf(s, "HCCKMSK = %08lx\n", HCCKMSK);
++ s += sprintf(s, "GPLUT = %08lx\n", GPLUT);
++ return (s - buf);
++}
++
++static ssize_t gsctl_store(struct class_device * subsys, const char * buf, size_t n)
++{
++ return n;
++}
++
++static ssize_t display_show(struct class_device * subsys, char * buf)
++{
++ char * s = buf;
++
++ s += sprintf(s, "DSCTRL = %08lx\n", DSCTRL);
++ s += sprintf(s, "DHT01 = %08lx\n", DHT01);
++ s += sprintf(s, "DHT02 = %08lx\n", DHT02);
++ s += sprintf(s, "DHT03 = %08lx\n", DHT03);
++ s += sprintf(s, "DVT01 = %08lx\n", DVT01);
++ s += sprintf(s, "DVT02 = %08lx\n", DVT02);
++ s += sprintf(s, "DVT03 = %08lx\n", DVT03);
++ s += sprintf(s, "DBCOL = %08lx\n", DBCOL);
++ s += sprintf(s, "BGCOLOR = %08lx\n", BGCOLOR);
++ s += sprintf(s, "DINTRS = %08lx\n", DINTRS);
++ s += sprintf(s, "DINTRE = %08lx\n", DINTRE);
++ s += sprintf(s, "DINTRCNT = %08lx\n", DINTRCNT);
++ s += sprintf(s, "DSIG = %08lx\n", DSIG);
++ s += sprintf(s, "DMCTRL = %08lx\n", DMCTRL);
++ s += sprintf(s, "CLIPCTRL = %08lx\n", CLIPCTRL);
++ s += sprintf(s, "SPOCTRL = %08lx\n", SPOCTRL);
++ s += sprintf(s, "SVCTRL = %08lx\n", SVCTRL);
++ s += sprintf(s, "DLSTS = %08lx\n", DLSTS);
++ s += sprintf(s, "DLLCTRL = %08lx\n", DLLCTRL);
++ s += sprintf(s, "DVLNUM = %08lx\n", DVLNUM);
++ s += sprintf(s, "DUCTRL = %08lx\n", DUCTRL);
++ s += sprintf(s, "DVECTRL = %08lx\n", DVECTRL);
++ s += sprintf(s, "DHDET = %08lx\n", DHDET);
++ s += sprintf(s, "DVDET = %08lx\n", DVDET);
++ s += sprintf(s, "DODMSK = %08lx\n", DODMSK);
++ s += sprintf(s, "CSC01 = %08lx\n", CSC01);
++ s += sprintf(s, "CSC02 = %08lx\n", CSC02);
++ s += sprintf(s, "CSC03 = %08lx\n", CSC03);
++ s += sprintf(s, "CSC04 = %08lx\n", CSC04);
++ s += sprintf(s, "CSC05 = %08lx\n", CSC05);
++ return (s - buf);
++}
++
++static ssize_t display_store(struct class_device * subsys, const char * buf, size_t n)
++{
++ return n;
++}
++
++static ssize_t clock_show(struct class_device * subsys, char * buf)
++{
++ char * s = buf;
++
++ s += sprintf(s, "SYSCLKSRC = %08lx\n", SYSCLKSRC);
++ s += sprintf(s, "PIXCLKSRC = %08lx\n", PIXCLKSRC);
++ s += sprintf(s, "CLKSLEEP = %08lx\n", CLKSLEEP);
++ s += sprintf(s, "COREPLL = %08lx\n", COREPLL);
++ s += sprintf(s, "DISPPLL = %08lx\n", DISPPLL);
++ s += sprintf(s, "PLLSTAT = %08lx\n", PLLSTAT);
++ s += sprintf(s, "VOVRCLK = %08lx\n", VOVRCLK);
++ s += sprintf(s, "PIXCLK = %08lx\n", PIXCLK);
++ s += sprintf(s, "MEMCLK = %08lx\n", MEMCLK);
++ s += sprintf(s, "M24CLK = %08lx\n", M24CLK);
++ s += sprintf(s, "MBXCLK = %08lx\n", MBXCLK);
++ s += sprintf(s, "SDCLK = %08lx\n", SDCLK);
++ s += sprintf(s, "PIXCLKDIV = %08lx\n", PIXCLKDIV);
++ return (s - buf);
++}
++
++static ssize_t clock_store(struct class_device * subsys, const char * buf, size_t n)
++{
++ return n;
++}
++
++static struct class_device_attribute mbx_class_attrs[] = {
++ __ATTR(sysconf,0644,sysconf_show,sysconf_store),
++ __ATTR(gsctl,0644,gsctl_show,gsctl_store),
++ __ATTR(display,0644,display_show,display_store),
++ __ATTR(clock,0644,clock_show,clock_store),
++};
++
++
++static void mbxfb_sysfs_register(struct fb_info *fbi)
++{
++ int i;
++ for (i = 0; i < ARRAY_SIZE(mbx_class_attrs); i++)
++ class_device_create_file(fbi->class_device,
++ &mbx_class_attrs[i]);
++}
+diff --git a/drivers/video/mbx/reg_bits.h b/drivers/video/mbx/reg_bits.h
+new file mode 100644
+index 0000000..be152f6
+--- /dev/null
++++ b/drivers/video/mbx/reg_bits.h
+@@ -0,0 +1,489 @@
++#ifndef __REG_BITS_2700G_
++#define __REG_BITS_2700G_
++
++/* /\* System Configuration Registers (0x03FE_0000 0x03FE_0010) *\/ */
++/* #define SYSCFG __REG_2700G(0x03FE0000) */
++/* #define PFBASE __REG_2700G(0x03FE0004) */
++/* #define PFCEIL __REG_2700G(0x03FE0008) */
++/* #define POLLFLAG __REG_2700G(0x03FE000C) */
++
++#define SYSRST_RST (1 << 0)
++
++/* /\* Interrupt Control Registers (0x03FE_0014 0x03FE_002F) *\/ */
++/* #define NINTPW __REG_2700G(0x03FE0014) */
++/* #define MINTENABLE __REG_2700G(0x03FE0018) */
++/* #define MINTSTAT __REG_2700G(0x03FE001C) */
++/* #define SINTENABLE __REG_2700G(0x03FE0020) */
++/* #define SINTSTAT __REG_2700G(0x03FE0024) */
++/* #define SINTCLR __REG_2700G(0x03FE0028) */
++
++/* SYSCLKSRC - SYSCLK Source Control Register */
++#define SYSCLKSRC_SEL Fld(2,0)
++#define SYSCLKSRC_REF ((0x0) << FShft(SYSCLKSRC_SEL))
++#define SYSCLKSRC_PLL_1 ((0x1) << FShft(SYSCLKSRC_SEL))
++#define SYSCLKSRC_PLL_2 ((0x2) << FShft(SYSCLKSRC_SEL))
++
++/* PIXCLKSRC - PIXCLK Source Control Register */
++#define PIXCLKSRC_SEL Fld(2,0)
++#define PIXCLKSRC_REF ((0x0) << FShft(PIXCLKSRC_SEL))
++#define PIXCLKSRC_PLL_1 ((0x1) << FShft(PIXCLKSRC_SEL))
++#define PIXCLKSRC_PLL_2 ((0x2) << FShft(PIXCLKSRC_SEL))
++
++/* Clock Disable Register */
++#define CLKSLEEP_SLP (1 << 0)
++
++/* Core PLL Control Register */
++#define CORE_PLL_M Fld(6,7)
++#define Core_Pll_M(x) ((x) << FShft(CORE_PLL_M))
++#define CORE_PLL_N Fld(3,4)
++#define Core_Pll_N(x) ((x) << FShft(CORE_PLL_N))
++#define CORE_PLL_P Fld(3,1)
++#define Core_Pll_P(x) ((x) << FShft(CORE_PLL_P))
++#define CORE_PLL_EN (1 << 0)
++
++/* Display PLL Control Register */
++#define DISP_PLL_M Fld(6,7)
++#define Disp_Pll_M(x) ((x) << FShft(DISP_PLL_M))
++#define DISP_PLL_N Fld(3,4)
++#define Disp_Pll_N(x) ((x) << FShft(DISP_PLL_N))
++#define DISP_PLL_P Fld(3,1)
++#define Disp_Pll_P(x) ((x) << FShft(DISP_PLL_P))
++#define DISP_PLL_EN (1 << 0)
++
++/* PLL status register */
++#define PLLSTAT_CORE_PLL_LOST_L (1 << 3)
++#define PLLSTAT_CORE_PLL_LSTS (1 << 2)
++#define PLLSTAT_DISP_PLL_LOST_L (1 << 1)
++#define PLLSTAT_DISP_PLL_LSTS (1 << 0)
++
++/* Video and scale clock control register */
++#define VOVRCLK_EN (1 << 0)
++
++/* Pixel clock control register */
++#define PIXCLK_EN (1 << 0)
++
++/* Memory clock control register */
++#define MEMCLK_EN (1 << 0)
++
++/* MBX clock control register */
++#define MBXCLK_DIV Fld(2,2)
++#define MBXCLK_DIV_1 ((0x0) << FShft(MBXCLK_DIV))
++#define MBXCLK_DIV_2 ((0x1) << FShft(MBXCLK_DIV))
++#define MBXCLK_DIV_3 ((0x2) << FShft(MBXCLK_DIV))
++#define MBXCLK_DIV_4 ((0x3) << FShft(MBXCLK_DIV))
++#define MBXCLK_EN Fld(2,0)
++#define MBXCLK_EN_NONE ((0x0) << FShft(MBXCLK_EN))
++#define MBXCLK_EN_2D ((0x1) << FShft(MBXCLK_EN))
++#define MBXCLK_EN_BOTH ((0x2) << FShft(MBXCLK_EN))
++
++/* M24 clock control register */
++#define M24CLK_DIV Fld(2,1)
++#define M24CLK_DIV_1 ((0x0) << FShft(M24CLK_DIV))
++#define M24CLK_DIV_2 ((0x1) << FShft(M24CLK_DIV))
++#define M24CLK_DIV_3 ((0x2) << FShft(M24CLK_DIV))
++#define M24CLK_DIV_4 ((0x3) << FShft(M24CLK_DIV))
++#define M24CLK_EN (1 << 0)
++
++/* SDRAM clock control register */
++#define SDCLK_EN (1 << 0)
++
++/* PixClk Divisor Register */
++#define PIXCLKDIV_PD Fld(9,0)
++#define Pixclkdiv_Pd(x) ((x) << FShft(PIXCLKDIV_PD))
++
++/* LCD Config control register */
++#define LCDCFG_IN_FMT Fld(3,28)
++#define Lcdcfg_In_Fmt(x) ((x) << FShft(LCDCFG_IN_FMT))
++#define LCDCFG_LCD1DEN_POL (1 << 27)
++#define LCDCFG_LCD1FCLK_POL (1 << 26)
++#define LCDCFG_LCD1LCLK_POL (1 << 25)
++#define LCDCFG_LCD1D_POL (1 << 24)
++#define LCDCFG_LCD2DEN_POL (1 << 23)
++#define LCDCFG_LCD2FCLK_POL (1 << 22)
++#define LCDCFG_LCD2LCLK_POL (1 << 21)
++#define LCDCFG_LCD2D_POL (1 << 20)
++#define LCDCFG_LCD1_TS (1 << 19)
++#define LCDCFG_LCD1D_DS (1 << 18)
++#define LCDCFG_LCD1C_DS (1 << 17)
++#define LCDCFG_LCD1_IS_IN (1 << 16)
++#define LCDCFG_LCD2_TS (1 << 3)
++#define LCDCFG_LCD2D_DS (1 << 2)
++#define LCDCFG_LCD2C_DS (1 << 1)
++#define LCDCFG_LCD2_IS_IN (1 << 0)
++
++/* On-Die Frame Buffer Power Control Register */
++#define ODFBPWR_SLOW (1 << 2)
++#define ODFBPWR_MODE Fld(2,0)
++#define ODFBPWR_MODE_ACT ((0x0) << FShft(ODFBPWR_MODE))
++#define ODFBPWR_MODE_ACT_LP ((0x1) << FShft(ODFBPWR_MODE))
++#define ODFBPWR_MODE_SLEEP ((0x2) << FShft(ODFBPWR_MODE))
++#define ODFBPWR_MODE_SHUTD ((0x3) << FShft(ODFBPWR_MODE))
++
++/* On-Die Frame Buffer Power State Status Register */
++#define ODFBSTAT_ACT (1 << 2)
++#define ODFBSTAT_SLP (1 << 1)
++#define ODFBSTAT_SDN (1 << 0)
++
++/* /\* GPIO Registers (0x03FE_006C 0x03FE_007F) *\/ */
++/* #define GPIOCGF __REG_2700G(0x03FE006C) */
++/* #define GPIOHI __REG_2700G(0x03FE0070) */
++/* #define GPIOLO __REG_2700G(0x03FE0074) */
++/* #define GPIOSTAT __REG_2700G(0x03FE0078) */
++
++/* /\* Pulse Width Modulator (PWM) Registers (0x03FE_0200 0x03FE_02FF) *\/ */
++/* #define PWMRST __REG_2700G(0x03FE0200) */
++/* #define PWMCFG __REG_2700G(0x03FE0204) */
++/* #define PWM0DIV __REG_2700G(0x03FE0210) */
++/* #define PWM0DUTY __REG_2700G(0x03FE0214) */
++/* #define PWM0PER __REG_2700G(0x03FE0218) */
++/* #define PWM1DIV __REG_2700G(0x03FE0220) */
++/* #define PWM1DUTY __REG_2700G(0x03FE0224) */
++/* #define PWM1PER __REG_2700G(0x03FE0228) */
++
++
++/* LMRST - Local Memory (SDRAM) Reset */
++#define LMRST_MC_RST (1 << 0)
++
++/* LMCFG - Local Memory (SDRAM) Configuration Register */
++#define LMCFG_LMC_DS (1 << 5)
++#define LMCFG_LMD_DS (1 << 4)
++#define LMCFG_LMA_DS (1 << 3)
++#define LMCFG_LMC_TS (1 << 2)
++#define LMCFG_LMD_TS (1 << 1)
++#define LMCFG_LMA_TS (1 << 0)
++
++/* LMPWR - Local Memory (SDRAM) Power Control Register */
++#define LMPWR_MC_PWR_CNT Fld(2,0)
++#define LMPWR_MC_PWR_ACT ((0x0) << FShft(LMPWR_MC_PWR_CNT)) /* Active */
++#define LMPWR_MC_PWR_SRM ((0x1) << FShft(LMPWR_MC_PWR_CNT)) /* Self-refresh */
++#define LMPWR_MC_PWR_DPD ((0x3) << FShft(LMPWR_MC_PWR_CNT)) /* deep power down */
++
++/* LMPWRSTAT - Local Memory (SDRAM) Power Status Register */
++#define LMPWRSTAT_MC_PWR_CNT Fld(2,0)
++#define LMPWRSTAT_MC_PWR_ACT ((0x0) << FShft(LMPWRSTAT_MC_PWR_CNT)) /* Active */
++#define LMPWRSTAT_MC_PWR_SRM ((0x1) << FShft(LMPWRSTAT_MC_PWR_CNT)) /* Self-refresh */
++#define LMPWRSTAT_MC_PWR_DPD ((0x3) << FShft(LMPWRSTAT_MC_PWR_CNT)) /* deep power down */
++
++/* LMTYPE - Local Memory (SDRAM) Type Register */
++#define LMTYPE_CASLAT Fld(3,10)
++#define LMTYPE_CASLAT_1 ((0x1) << FShft(LMTYPE_CASLAT))
++#define LMTYPE_CASLAT_2 ((0x2) << FShft(LMTYPE_CASLAT))
++#define LMTYPE_CASLAT_3 ((0x3) << FShft(LMTYPE_CASLAT))
++#define LMTYPE_BKSZ Fld(2,8)
++#define LMTYPE_BKSZ_1 ((0x1) << FShft(LMTYPE_BKSZ))
++#define LMTYPE_BKSZ_2 ((0x2) << FShft(LMTYPE_BKSZ))
++#define LMTYPE_ROWSZ Fld(4,4)
++#define LMTYPE_ROWSZ_11 ((0xb) << FShft(LMTYPE_ROWSZ))
++#define LMTYPE_ROWSZ_12 ((0xc) << FShft(LMTYPE_ROWSZ))
++#define LMTYPE_ROWSZ_13 ((0xd) << FShft(LMTYPE_ROWSZ))
++#define LMTYPE_COLSZ Fld(4,0)
++#define LMTYPE_COLSZ_7 ((0x7) << FShft(LMTYPE_COLSZ))
++#define LMTYPE_COLSZ_8 ((0x8) << FShft(LMTYPE_COLSZ))
++#define LMTYPE_COLSZ_9 ((0x9) << FShft(LMTYPE_COLSZ))
++#define LMTYPE_COLSZ_10 ((0xa) << FShft(LMTYPE_COLSZ))
++#define LMTYPE_COLSZ_11 ((0xb) << FShft(LMTYPE_COLSZ))
++#define LMTYPE_COLSZ_12 ((0xc) << FShft(LMTYPE_COLSZ))
++
++/* LMTIM - Local Memory (SDRAM) Timing Register */
++#define LMTIM_TRAS Fld(4,16)
++#define Lmtim_Tras(x) ((x) << FShft(LMTIM_TRAS))
++#define LMTIM_TRP Fld(4,12)
++#define Lmtim_Trp(x) ((x) << FShft(LMTIM_TRP))
++#define LMTIM_TRCD Fld(4,8)
++#define Lmtim_Trcd(x) ((x) << FShft(LMTIM_TRCD))
++#define LMTIM_TRC Fld(4,4)
++#define Lmtim_Trc(x) ((x) << FShft(LMTIM_TRC))
++#define LMTIM_TDPL Fld(4,0)
++#define Lmtim_Tdpl(x) ((x) << FShft(LMTIM_TDPL))
++
++/* LMREFRESH - Local Memory (SDRAM) tREF Control Register */
++#define LMREFRESH_TREF Fld(2,0)
++#define Lmrefresh_Tref(x) ((x) << FShft(LMREFRESH_TREF))
++
++/* #define LMCEMR __REG_2700G(0x03FE1010) */
++/* #define LMPROTMIN __REG_2700G(0x03FE1020) */
++/* #define LMPROTMAX __REG_2700G(0x03FE1024) */
++/* #define LMPROTCFG __REG_2700G(0x03FE1028) */
++/* #define LMPROTERR __REG_2700G(0x03FE102C) */
++
++/* GSCTRL - Graphics surface control register */
++#define GSCTRL_LUT_EN (1 << 31)
++#define GSCTRL_GPIXFMT Fld(4,27)
++#define GSCTRL_GPIXFMT_INDEXED ((0x0) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GPIXFMT_ARGB4444 ((0x4) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GPIXFMT_ARGB1555 ((0x5) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GPIXFMT_RGB888 ((0x6) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GPIXFMT_RGB565 ((0x7) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GPIXFMT_ARGB8888 ((0x8) << FShft(GSCTRL_GPIXFMT))
++#define GSCTRL_GAMMA_EN (1 << 26)
++
++#define GSCTRL_GSWIDTH Fld(11,11)
++#define Gsctrl_Width(Pixel) /* Display Width [1..2048 pix.] */ \
++ (((Pixel) - 1) << FShft(GSCTRL_GSWIDTH))
++
++#define GSCTRL_GSHEIGHT Fld(11,0)
++#define Gsctrl_Height(Pixel) /* Display Height [1..2048 pix.] */ \
++ (((Pixel) - 1) << FShft(GSCTRL_GSHEIGHT))
++
++/* GBBASE fileds */
++#define GBBASE_GLALPHA Fld(8,24)
++#define Gbbase_Glalpha(x) ((x) << FShft(GBBASE_GLALPHA))
++
++#define GBBASE_COLKEY Fld(24,0)
++#define Gbbase_Colkey(x) ((x) << FShft(GBBASE_COLKEY))
++
++/* GDRCTRL fields */
++#define GDRCTRL_PIXDBL (1 << 31)
++#define GDRCTRL_PIXHLV (1 << 30)
++#define GDRCTRL_LNDBL (1 << 29)
++#define GDRCTRL_LNHLV (1 << 28)
++#define GDRCTRL_COLKEYM Fld(24,0)
++#define Gdrctrl_Colkeym(x) ((x) << FShft(GDRCTRL_COLKEYM))
++
++/* GSCADR graphics stream control address register fields */
++#define GSCADR_STR_EN (1 << 31)
++#define GSCADR_COLKEY_EN (1 << 30)
++#define GSCADR_COLKEYSCR (1 << 29)
++#define GSCADR_BLEND_M Fld(2,27)
++#define GSCADR_BLEND_NONE ((0x0) << FShft(GSCADR_BLEND_M))
++#define GSCADR_BLEND_INV ((0x1) << FShft(GSCADR_BLEND_M))
++#define GSCADR_BLEND_GLOB ((0x2) << FShft(GSCADR_BLEND_M))
++#define GSCADR_BLEND_PIX ((0x3) << FShft(GSCADR_BLEND_M))
++#define GSCADR_BLEND_POS Fld(2,24)
++#define GSCADR_BLEND_GFX ((0x0) << FShft(GSCADR_BLEND_POS))
++#define GSCADR_BLEND_VID ((0x1) << FShft(GSCADR_BLEND_POS))
++#define GSCADR_BLEND_CUR ((0x2) << FShft(GSCADR_BLEND_POS))
++#define GSCADR_GBASE_ADR Fld(23,0)
++#define Gscadr_Gbase_Adr(x) ((x) << FShft(GSCADR_GBASE_ADR))
++
++/* GSADR graphics stride address register fields */
++#define GSADR_SRCSTRIDE Fld(10,22)
++#define Gsadr_Srcstride(x) ((x) << FShft(GSADR_SRCSTRIDE))
++#define GSADR_XSTART Fld(11,11)
++#define Gsadr_Xstart(x) ((x) << FShft(GSADR_XSTART))
++#define GSADR_YSTART Fld(11,0)
++#define Gsadr_Ystart(y) ((y) << FShft(GSADR_YSTART))
++
++/* GPLUT graphics palette register fields */
++#define GPLUT_LUTADR Fld(8,24)
++#define Gplut_Lutadr(x) ((x) << FShft(GPLUT_LUTADR))
++#define GPLUT_LUTDATA Fld(24,0)
++#define Gplut_Lutdata(x) ((x) << FShft(GPLUT_LUTDATA))
++
++/* #define VSCTRL __REG_2700G(0x03FE2004) */
++/* #define VBBASE __REG_2700G(0x03FE2024) */
++/* #define VCMSK __REG_2700G(0x03FE2044) */
++/* #define VSCADR __REG_2700G(0x03FE2064) */
++/* #define VUBASE __REG_2700G(0x03FE2084) */
++/* #define VVBASE __REG_2700G(0x03FE20A4) */
++/* #define VSADR __REG_2700G(0x03FE20C4) */
++
++
++/* HCCTRL - Hardware Cursor Register fields */
++#define HCCTRL_CUR_EN (1 << 31)
++#define HCCTRL_COLKEY_EN (1 << 29)
++#define HCCTRL_COLKEYSRC (1 << 28)
++#define HCCTRL_BLEND_M Fld(2,26)
++#define HCCTRL_BLEND_NONE ((0x0) << FShft(HCCTRL_BLEND_M))
++#define HCCTRL_BLEND_INV ((0x1) << FShft(HCCTRL_BLEND_M))
++#define HCCTRL_BLEND_GLOB ((0x2) << FShft(HCCTRL_BLEND_M))
++#define HCCTRL_BLEND_PIX ((0x3) << FShft(HCCTRL_BLEND_M))
++#define HCCTRL_CPIXFMT Fld(3,23)
++#define HCCTRL_CPIXFMT_RGB332 ((0x3) << FShft(HCCTRL_CPIXFMT))
++#define HCCTRL_CPIXFMT_ARGB4444 ((0x4) << FShft(HCCTRL_CPIXFMT))
++#define HCCTRL_CPIXFMT_ARGB1555 ((0x5) << FShft(HCCTRL_CPIXFMT))
++#define HCCTRL_CBASE_ADR Fld(23,0)
++#define Hcctrl_Cbase_Adr(x) ((x) << FShft(HCCTRL_CBASE_ADR))
++
++/* HCSIZE Hardware Cursor Size Register fields */
++#define HCSIZE_BLEND_POS Fld(2,29)
++#define HCSIZE_BLEND_GFX ((0x0) << FShft(HCSIZE_BLEND_POS))
++#define HCSIZE_BLEND_VID ((0x1) << FShft(HCSIZE_BLEND_POS))
++#define HCSIZE_BLEND_CUR ((0x2) << FShft(HCSIZE_BLEND_POS))
++#define HCSIZE_CWIDTH Fld(3,16)
++#define Hcsize_Cwidth(x) ((x) << FShft(HCSIZE_CWIDTH))
++#define HCSIZE_CHEIGHT Fld(3,0)
++#define Hcsize_Cheight(x) ((x) << FShft(HCSIZE_CHEIGHT))
++
++/* HCPOS Hardware Cursor Position Register fields */
++#define HCPOS_SWITCHSRC (1 << 30)
++#define HCPOS_CURBLINK Fld(6,24)
++#define Hcpos_Curblink(x) ((x) << FShft(HCPOS_CURBLINK))
++#define HCPOS_XSTART Fld(12,12)
++#define Hcpos_Xstart(x) ((x) << FShft(HCPOS_XSTART))
++#define HCPOS_YSTART Fld(12,0)
++#define Hcpos_Ystart(y) ((y) << FShft(HCPOS_YSTART))
++
++/* HCBADR Hardware Cursor Blend Address Register */
++#define HCBADR_GLALPHA Fld(8,24)
++#define Hcbadr_Glalpha(x) ((x) << FShft(HCBADR_GLALPHA))
++#define HCBADR_COLKEY Fld(24,0)
++#define Hcbadr_Colkey(x) ((x) << FShft(HCBADR_COLKEY))
++
++/* HCCKMSK - Hardware Cursor Color Key Mask Register */
++#define HCCKMSK_COLKEY_M Fld(24,0)
++#define Hcckmsk_Colkey_M(x) ((x) << FShft(HCCKMSK_COLKEY_M))
++
++/* DSCTRL - Display sync control register */
++#define DSCTRL_SYNCGEN_EN (1 << 31)
++#define DSCTRL_DPL_RST (1 << 29)
++#define DSCTRL_PWRDN_M (1 << 28)
++#define DSCTRL_UPDSYNCCNT (1 << 26)
++#define DSCTRL_UPDINTCNT (1 << 25)
++#define DSCTRL_UPDCNT (1 << 24)
++#define DSCTRL_UPDWAIT Fld(4,16)
++#define Dsctrl_Updwait(x) ((x) << FShft(DSCTRL_UPDWAIT))
++#define DSCTRL_CLKPOL (1 << 11)
++#define DSCTRL_CSYNC_EN (1 << 10)
++#define DSCTRL_VS_SLAVE (1 << 7)
++#define DSCTRL_HS_SLAVE (1 << 6)
++#define DSCTRL_BLNK_POL (1 << 5)
++#define DSCTRL_BLNK_DIS (1 << 4)
++#define DSCTRL_VS_POL (1 << 3)
++#define DSCTRL_VS_DIS (1 << 2)
++#define DSCTRL_HS_POL (1 << 1)
++#define DSCTRL_HS_DIS (1 << 0)
++
++/* DHT01 - Display horizontal timing register 01 */
++#define DHT01_HBPS Fld(12,16)
++#define Dht01_Hbps(x) ((x) << FShft(DHT01_HBPS))
++#define DHT01_HT Fld(12,0)
++#define Dht01_Ht(x) ((x) << FShft(DHT01_HT))
++
++/* DHT02 - Display horizontal timing register 02 */
++#define DHT02_HAS Fld(12,16)
++#define Dht02_Has(x) ((x) << FShft(DHT02_HAS))
++#define DHT02_HLBS Fld(12,0)
++#define Dht02_Hlbs(x) ((x) << FShft(DHT02_HLBS))
++
++/* DHT03 - Display horizontal timing register 03 */
++#define DHT03_HFPS Fld(12,16)
++#define Dht03_Hfps(x) ((x) << FShft(DHT03_HFPS))
++#define DHT03_HRBS Fld(12,0)
++#define Dht03_Hrbs(x) ((x) << FShft(DHT03_HRBS))
++
++/* DVT01 - Display vertical timing register 01 */
++#define DVT01_VBPS Fld(12,16)
++#define Dvt01_Vbps(x) ((x) << FShft(DVT01_VBPS))
++#define DVT01_VT Fld(12,0)
++#define Dvt01_Vt(x) ((x) << FShft(DVT01_VT))
++
++/* DVT02 - Display vertical timing register 02 */
++#define DVT02_VAS Fld(12,16)
++#define Dvt02_Vas(x) ((x) << FShft(DVT02_VAS))
++#define DVT02_VTBS Fld(12,0)
++#define Dvt02_Vtbs(x) ((x) << FShft(DVT02_VTBS))
++
++/* DVT03 - Display vertical timing register 03 */
++#define DVT03_VFPS Fld(12,16)
++#define Dvt03_Vfps(x) ((x) << FShft(DVT03_VFPS))
++#define DVT03_VBBS Fld(12,0)
++#define Dvt03_Vbbs(x) ((x) << FShft(DVT03_VBBS))
++
++/* DVECTRL - display vertical event control register */
++#define DVECTRL_VEVENT Fld(12,16)
++#define Dvectrl_Vevent(x) ((x) << FShft(DVECTRL_VEVENT))
++#define DVECTRL_VFETCH Fld(12,0)
++#define Dvectrl_Vfetch(x) ((x) << FShft(DVECTRL_VFETCH))
++
++/* DHDET - display horizontal DE timing register */
++#define DHDET_HDES Fld(12,16)
++#define Dhdet_Hdes(x) ((x) << FShft(DHDET_HDES))
++#define DHDET_HDEF Fld(12,0)
++#define Dhdet_Hdef(x) ((x) << FShft(DHDET_HDEF))
++
++/* DVDET - display vertical DE timing register */
++#define DVDET_VDES Fld(12,16)
++#define Dvdet_Vdes(x) ((x) << FShft(DVDET_VDES))
++#define DVDET_VDEF Fld(12,0)
++#define Dvdet_Vdef(x) ((x) << FShft(DVDET_VDEF))
++
++/* DODMSK - display output data mask register */
++#define DODMSK_MASK_LVL (1 << 31)
++#define DODMSK_BLNK_LVL (1 << 30)
++#define DODMSK_MASK_B Fld(8,16)
++#define Dodmsk_Mask_B(x) ((x) << FShft(DODMSK_MASK_B))
++#define DODMSK_MASK_G Fld(8,8)
++#define Dodmsk_Mask_G(x) ((x) << FShft(DODMSK_MASK_G))
++#define DODMSK_MASK_R Fld(8,0)
++#define Dodmsk_Mask_R(x) ((x) << FShft(DODMSK_MASK_R))
++
++/* DBCOL - display border color control register */
++#define DBCOL_BORDCOL Fld(24,0)
++#define Dbcol_Bordcol(x) ((x) << FShft(DBCOL_BORDCOL))
++
++/* DVLNUM - display vertical line number register */
++#define DVLNUM_VLINE Fld(12,0)
++#define Dvlnum_Vline(x) ((x) << FShft(DVLNUM_VLINE))
++
++/* DMCTRL - Display Memory Control Register */
++#define DMCTRL_MEM_REF Fld(2,30)
++#define DMCTRL_MEM_REF_ACT ((0x0) << FShft(DMCTRL_MEM_REF))
++#define DMCTRL_MEM_REF_HB ((0x1) << FShft(DMCTRL_MEM_REF))
++#define DMCTRL_MEM_REF_VB ((0x2) << FShft(DMCTRL_MEM_REF))
++#define DMCTRL_MEM_REF_BOTH ((0x3) << FShft(DMCTRL_MEM_REF))
++#define DMCTRL_UV_THRHLD Fld(6,24)
++#define Dmctrl_Uv_Thrhld(x) ((x) << FShft(DMCTRL_UV_THRHLD))
++#define DMCTRL_V_THRHLD Fld(7,16)
++#define Dmctrl_V_Thrhld(x) ((x) << FShft(DMCTRL_V_THRHLD))
++#define DMCTRL_D_THRHLD Fld(7,8)
++#define Dmctrl_D_Thrhld(x) ((x) << FShft(DMCTRL_D_THRHLD))
++#define DMCTRL_BURSTLEN Fld(6,0)
++#define Dmctrl_Burstlen(x) ((x) << FShft(DMCTRL_BURSTLEN))
++
++
++/* DLSTS - display load status register */
++#define DLSTS_RLD_ADONE (1 << 23)
++/* #define DLSTS_RLD_ADOUT Fld(23,0) */
++
++/* DLLCTRL - display list load control register */
++#define DLLCTRL_RLD_ADRLN Fld(8,24)
++#define Dllctrl_Rld_Adrln(x) ((x) << FShft(DLLCTRL_RLD_ADRLN))
++
++/* #define DSIG __REG_2700G(0x03FE2184) */
++/* #define DINTRS __REG_2700G(0x03FE2178) */
++/* #define DINTRE __REG_2700G(0x03FE217C) */
++/* #define DINTRCNT __REG_2700G(0x03FE2180) */
++/* #define DUCTRL __REG_2700G(0x03FE230C) */
++
++/* BGCOLOR - background color control register */
++/* #define BGCOLOR __REG_2700G(0x03FE2174) */
++
++/* #define CLIPCTRL __REG_2700G(0x03FE218C) */
++/* SPOCTRL - Scale Pitch/Order Control Register */
++#define SPOCTRL_H_SC_BP (1 << 31)
++#define SPOCTRL_V_SC_BP (1 << 30)
++#define SPOCTRL_HV_SC_OR (1 << 29)
++#define SPOCTRL_VS_UR_C (1 << 27)
++#define SPOCTRL_VORDER Fld(2,16)
++#define SPOCTRL_VORDER_1TAP ((0x0) << FShft(SPOCTRL_VORDER))
++#define SPOCTRL_VORDER_2TAP ((0x1) << FShft(SPOCTRL_VORDER))
++#define SPOCTRL_VORDER_4TAP ((0x3) << FShft(SPOCTRL_VORDER))
++#define SPOCTRL_VPITCH Fld(16,0)
++#define Spoctrl_Vpitch(x) ((x) << FShft(SPOCTRL_VPITCH))
++
++/* #define SVCTRL __REG_2700G(0x03FE2194) */
++
++/* /\* 0x03FE_2198 *\/ */
++/* /\* 0x03FE_21A8 VSCOEFF[0:4] Video Scalar Vertical Coefficient [0:4] 4.14.5 *\/ */
++
++/* #define SHCTRL __REG_2700G(0x03FE21B0) */
++
++/* /\* 0x03FE_21B4 *\/ */
++/* /\* 0x03FE_21D4 HSCOEFF[0:8] Video Scalar Horizontal Coefficient [0:8] 4.14.7 *\/ */
++
++/* #define SSSIZE __REG_2700G(0x03FE21D8) */
++
++/* /\* 0x03FE_2200 *\/ */
++/* /\* 0x03FE_2240 VIDGAM[0:16] Video Gamma LUT Index [0:16] 4.15.2 *\/ */
++
++/* /\* 0x03FE_2250 *\/ */
++/* /\* 0x03FE_2290 GFXGAM[0:16] Graphics Gamma LUT Index [0:16] 4.15.3 *\/ */
++
++/* #define CSC01 __REG_2700G(0x03FE2330) */
++/* #define CSC02 __REG_2700G(0x03FE2334) */
++/* #define CSC03 __REG_2700G(0x03FE2338) */
++/* #define CSC04 __REG_2700G(0x03FE233C) */
++/* #define CSC05 __REG_2700G(0x03FE2340) */
++
++#endif /* __REG_BITS_2700G_ */
+diff --git a/drivers/video/mbx/regs.h b/drivers/video/mbx/regs.h
+new file mode 100644
+index 0000000..edf0f14
+--- /dev/null
++++ b/drivers/video/mbx/regs.h
+@@ -0,0 +1,192 @@
++#ifndef __REGS_2700G_
++#define __REGS_2700G_
++
++/* extern unsigned long virt_base_2700; */
++#define __REG_2700G(x) (*(volatile unsigned long*)((x)+virt_base_2700))
++
++/* System Configuration Registers (0x0000_0000 0x0000_0010) */
++#define SYSCFG __REG_2700G(0x00000000)
++#define PFBASE __REG_2700G(0x00000004)
++#define PFCEIL __REG_2700G(0x00000008)
++#define POLLFLAG __REG_2700G(0x0000000c)
++#define SYSRST __REG_2700G(0x00000010)
++
++/* Interrupt Control Registers (0x0000_0014 0x0000_002F) */
++#define NINTPW __REG_2700G(0x00000014)
++#define MINTENABLE __REG_2700G(0x00000018)
++#define MINTSTAT __REG_2700G(0x0000001c)
++#define SINTENABLE __REG_2700G(0x00000020)
++#define SINTSTAT __REG_2700G(0x00000024)
++#define SINTCLR __REG_2700G(0x00000028)
++
++/* Clock Control Registers (0x0000_002C 0x0000_005F) */
++#define SYSCLKSRC __REG_2700G(0x0000002c)
++#define PIXCLKSRC __REG_2700G(0x00000030)
++#define CLKSLEEP __REG_2700G(0x00000034)
++#define COREPLL __REG_2700G(0x00000038)
++#define DISPPLL __REG_2700G(0x0000003c)
++#define PLLSTAT __REG_2700G(0x00000040)
++#define VOVRCLK __REG_2700G(0x00000044)
++#define PIXCLK __REG_2700G(0x00000048)
++#define MEMCLK __REG_2700G(0x0000004c)
++#define M24CLK __REG_2700G(0x00000054)
++#define MBXCLK __REG_2700G(0x00000054)
++#define SDCLK __REG_2700G(0x00000058)
++#define PIXCLKDIV __REG_2700G(0x0000005c)
++
++/* LCD Port Control Register (0x0000_0060 0x0000_006F) */
++#define LCD_CONFIG __REG_2700G(0x00000060)
++
++/* On-Die Frame Buffer Registers (0x0000_0064 0x0000_006B) */
++#define ODFBPWR __REG_2700G(0x00000064)
++#define ODFBSTAT __REG_2700G(0x00000068)
++
++/* GPIO Registers (0x0000_006C 0x0000_007F) */
++#define GPIOCGF __REG_2700G(0x0000006c)
++#define GPIOHI __REG_2700G(0x00000070)
++#define GPIOLO __REG_2700G(0x00000074)
++#define GPIOSTAT __REG_2700G(0x00000078)
++
++/* Pulse Width Modulator (PWM) Registers (0x0000_0200 0x0000_02FF) */
++#define PWMRST __REG_2700G(0x00000200)
++#define PWMCFG __REG_2700G(0x00000204)
++#define PWM0DIV __REG_2700G(0x00000210)
++#define PWM0DUTY __REG_2700G(0x00000214)
++#define PWM0PER __REG_2700G(0x00000218)
++#define PWM1DIV __REG_2700G(0x00000220)
++#define PWM1DUTY __REG_2700G(0x00000224)
++#define PWM1PER __REG_2700G(0x00000228)
++
++/* Identification (ID) Registers (0x0000_0300 0x0000_0FFF) */
++#define ID __REG_2700G(0x00000FF0)
++
++/* Local Memory (SDRAM) Interface Registers (0x0000_1000 0x0000_1FFF) */
++#define LMRST __REG_2700G(0x00001000)
++#define LMCFG __REG_2700G(0x00001004)
++#define LMPWR __REG_2700G(0x00001008)
++#define LMPWRSTAT __REG_2700G(0x0000100c)
++#define LMCEMR __REG_2700G(0x00001010)
++#define LMTYPE __REG_2700G(0x00001014)
++#define LMTIM __REG_2700G(0x00001018)
++#define LMREFRESH __REG_2700G(0x0000101c)
++#define LMPROTMIN __REG_2700G(0x00001020)
++#define LMPROTMAX __REG_2700G(0x00001024)
++#define LMPROTCFG __REG_2700G(0x00001028)
++#define LMPROTERR __REG_2700G(0x0000102c)
++
++/* Plane Controller Registers (0x0000_2000 0x0000_2FFF) */
++#define GSCTRL __REG_2700G(0x00002000)
++#define VSCTRL __REG_2700G(0x00002004)
++#define GBBASE __REG_2700G(0x00002020)
++#define VBBASE __REG_2700G(0x00002024)
++#define GDRCTRL __REG_2700G(0x00002040)
++#define VCMSK __REG_2700G(0x00002044)
++#define GSCADR __REG_2700G(0x00002060)
++#define VSCADR __REG_2700G(0x00002064)
++#define VUBASE __REG_2700G(0x00002084)
++#define VVBASE __REG_2700G(0x000020a4)
++#define GSADR __REG_2700G(0x000020c0)
++#define VSADR __REG_2700G(0x000020c4)
++#define HCCTRL __REG_2700G(0x00002100)
++#define HCSIZE __REG_2700G(0x00002110)
++#define HCPOS __REG_2700G(0x00002120)
++#define HCBADR __REG_2700G(0x00002130)
++#define HCCKMSK __REG_2700G(0x00002140)
++#define GPLUT __REG_2700G(0x00002150)
++#define DSCTRL __REG_2700G(0x00002154)
++#define DHT01 __REG_2700G(0x00002158)
++#define DHT02 __REG_2700G(0x0000215c)
++#define DHT03 __REG_2700G(0x00002160)
++#define DVT01 __REG_2700G(0x00002164)
++#define DVT02 __REG_2700G(0x00002168)
++#define DVT03 __REG_2700G(0x0000216c)
++#define DBCOL __REG_2700G(0x00002170)
++#define BGCOLOR __REG_2700G(0x00002174)
++#define DINTRS __REG_2700G(0x00002178)
++#define DINTRE __REG_2700G(0x0000217c)
++#define DINTRCNT __REG_2700G(0x00002180)
++#define DSIG __REG_2700G(0x00002184)
++#define DMCTRL __REG_2700G(0x00002188)
++#define CLIPCTRL __REG_2700G(0x0000218c)
++#define SPOCTRL __REG_2700G(0x00002190)
++#define SVCTRL __REG_2700G(0x00002194)
++
++/* 0x0000_2198 */
++/* 0x0000_21A8 VSCOEFF[0:4] Video Scalar Vertical Coefficient [0:4] 4.14.5 */
++#define VSCOEFF0 __REG_2700G(0x00002198)
++#define VSCOEFF1 __REG_2700G(0x0000219c)
++#define VSCOEFF2 __REG_2700G(0x000021a0)
++#define VSCOEFF3 __REG_2700G(0x000021a4)
++#define VSCOEFF4 __REG_2700G(0x000021a8)
++
++#define SHCTRL __REG_2700G(0x000021b0)
++
++/* 0x0000_21B4 */
++/* 0x0000_21D4 HSCOEFF[0:8] Video Scalar Horizontal Coefficient [0:8] 4.14.7 */
++#define HSCOEFF0 __REG_2700G(0x000021b4)
++#define HSCOEFF1 __REG_2700G(0x000021b8)
++#define HSCOEFF2 __REG_2700G(0x000021bc)
++#define HSCOEFF3 __REG_2700G(0x000021b0)
++#define HSCOEFF4 __REG_2700G(0x000021c4)
++#define HSCOEFF5 __REG_2700G(0x000021c8)
++#define HSCOEFF6 __REG_2700G(0x000021cc)
++#define HSCOEFF7 __REG_2700G(0x000021d0)
++#define HSCOEFF8 __REG_2700G(0x000021d4)
++
++#define SSSIZE __REG_2700G(0x000021D8)
++
++/* 0x0000_2200 */
++/* 0x0000_2240 VIDGAM[0:16] Video Gamma LUT Index [0:16] 4.15.2 */
++#define VIDGAM0 __REG_2700G(0x00002200)
++#define VIDGAM1 __REG_2700G(0x00002204)
++#define VIDGAM2 __REG_2700G(0x00002208)
++#define VIDGAM3 __REG_2700G(0x0000220c)
++#define VIDGAM4 __REG_2700G(0x00002210)
++#define VIDGAM5 __REG_2700G(0x00002214)
++#define VIDGAM6 __REG_2700G(0x00002218)
++#define VIDGAM7 __REG_2700G(0x0000221c)
++#define VIDGAM8 __REG_2700G(0x00002220)
++#define VIDGAM9 __REG_2700G(0x00002224)
++#define VIDGAM10 __REG_2700G(0x00002228)
++#define VIDGAM11 __REG_2700G(0x0000222c)
++#define VIDGAM12 __REG_2700G(0x00002230)
++#define VIDGAM13 __REG_2700G(0x00002234)
++#define VIDGAM14 __REG_2700G(0x00002238)
++#define VIDGAM15 __REG_2700G(0x0000223c)
++#define VIDGAM16 __REG_2700G(0x00002240)
++
++/* 0x0000_2250 */
++/* 0x0000_2290 GFXGAM[0:16] Graphics Gamma LUT Index [0:16] 4.15.3 */
++#define GFXGAM0 __REG_2700G(0x00002250)
++#define GFXGAM1 __REG_2700G(0x00002254)
++#define GFXGAM2 __REG_2700G(0x00002258)
++#define GFXGAM3 __REG_2700G(0x0000225c)
++#define GFXGAM4 __REG_2700G(0x00002260)
++#define GFXGAM5 __REG_2700G(0x00002264)
++#define GFXGAM6 __REG_2700G(0x00002268)
++#define GFXGAM7 __REG_2700G(0x0000226c)
++#define GFXGAM8 __REG_2700G(0x00002270)
++#define GFXGAM9 __REG_2700G(0x00002274)
++#define GFXGAM10 __REG_2700G(0x00002278)
++#define GFXGAM11 __REG_2700G(0x0000227c)
++#define GFXGAM12 __REG_2700G(0x00002280)
++#define GFXGAM13 __REG_2700G(0x00002284)
++#define GFXGAM14 __REG_2700G(0x00002288)
++#define GFXGAM15 __REG_2700G(0x0000228c)
++#define GFXGAM16 __REG_2700G(0x00002290)
++
++#define DLSTS __REG_2700G(0x00002300)
++#define DLLCTRL __REG_2700G(0x00002304)
++#define DVLNUM __REG_2700G(0x00002308)
++#define DUCTRL __REG_2700G(0x0000230c)
++#define DVECTRL __REG_2700G(0x00002310)
++#define DHDET __REG_2700G(0x00002314)
++#define DVDET __REG_2700G(0x00002318)
++#define DODMSK __REG_2700G(0x0000231c)
++#define CSC01 __REG_2700G(0x00002330)
++#define CSC02 __REG_2700G(0x00002334)
++#define CSC03 __REG_2700G(0x00002338)
++#define CSC04 __REG_2700G(0x0000233c)
++#define CSC05 __REG_2700G(0x00002340)
++
++#endif /* __REGS_2700G_ */
+diff --git a/include/linux/mbxfb.h b/include/linux/mbxfb.h
+new file mode 100644
+index 0000000..3bde0f5
+--- /dev/null
++++ b/include/linux/mbxfb.h
+@@ -0,0 +1,28 @@
++#ifndef __MBX_FB_H
++#define __MBX_FB_H
++
++struct mbxfb_val {
++ unsigned int defval;
++ unsigned int min;
++ unsigned int max;
++};
++
++struct fb_info;
++
++struct mbxfb_platform_data {
++ /* Screen info */
++ struct mbxfb_val xres;
++ struct mbxfb_val yres;
++ struct mbxfb_val bpp;
++
++ /* Memory info */
++ unsigned long memsize; /* if 0 use ODFB? */
++ unsigned long timings1;
++ unsigned long timings2;
++ unsigned long timings3;
++
++ int (*probe)(struct fb_info *fb);
++ int (*remove)(struct fb_info *fb);
++};
++
++#endif /* __MBX_FB_H */
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/defconfig b/openembedded/packages/linux/linux-cmx270-2.6.17/defconfig
new file mode 100644
index 000000000..621fae702
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/defconfig
@@ -0,0 +1,1169 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17
+# Tue Jul 18 15:06:47 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-8d"
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# 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_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+CONFIG_MACH_CM_X270=y
+# CONFIG_MACH_CM_X255 is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+#CONFIG_CM_X270_SB270=y
+CONFIG_CM_X270_ATXBASE=y
+CONFIG_CM_X270_REV12=y
+# CONFIG_CM_X270_REV11 is not set
+CONFIG_PXA27x=y
+CONFIG_IWMMXT=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPLIT_PTLOCK_CPUS=4096
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,38400 console=tty0 root=/dev/sda1 rootdelay=10 video=mbxfb"
+#CONFIG_CMDLINE="console=ttyS0,38400 root=/dev/sda1 rootdelay=10 rw video=pxafb:mode:240x320-16,pixclock:367647,left:20,right:2,hsynclen:10,upper:3,lower:2,vsynclen:2,active,color,outputen:1,pixclockpol:1,vsync:0,hsync:0"
+# CONFIG_XIP_KERNEL 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_CM_X270=y
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# 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_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE 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
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# 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_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_TSLIBDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_SUNKBD=y
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK 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 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_UCB1400_TS=y
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_FIRMWARE_EDID is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+#CONFIG_FB_PXA is not set
+#CONFIG_FB_PXA_PARAMETERS is not set
+CONFIG_FB_MBX=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+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
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# CONFIG_SND_DUMMY 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_PXA2XX_PCM=y
+CONFIG_SND_PXA2XX_AC97=y
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+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
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# 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_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_SA1100 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+CONFIG_RTC_DRV_V3020=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=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
+
+#
+# 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_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+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_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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# 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
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/mach-types b/openembedded/packages/linux/linux-cmx270-2.6.17/mach-types
new file mode 100644
index 000000000..2354f822f
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/mach-types
@@ -0,0 +1,1112 @@
+# Database of machine macros and numbers
+#
+# This file is linux/arch/arm/tools/mach-types
+#
+# Up to date versions of this file can be obtained from:
+#
+# http://www.arm.linux.org.uk/developer/machines/?action=download
+#
+# Please do not send patches to this file; it is automatically generated!
+# To add an entry into this database, please see Documentation/arm/README,
+# or visit:
+#
+# http://www.arm.linux.org.uk/developer/machines/?action=new
+#
+# Last update: Tue Jul 18 14:35:04 2006
+#
+# 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
+psion_series7 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
+orion ARCH_ORION 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_TABLETESL_WIRELESS_TABLET 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_GUMSTIK GUMSTIK 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
+ml674001 MACH_MACH_TYPE_ML674001 MACH_TYPE_ML674001 547
+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
+ml69q6203 MACH_ML69Q6203 ML69Q6203 649
+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
+vt001 MACH_MACH_VADATECH MACH_VADATECH 738
+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
+iq_nextgen_a MACH_IQ_NEXTGEN_A IQ_NEXTGEN_A 799
+iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800
+iq_nextgen_c MACH_IQ_NEXTGEN_C IQ_NEXTGEN_C 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
+t3xscale MACH_T3XSCALE T3XSCALE 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
+xscale_palmld MACH_XSCALE_PALMLD XSCALE_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
+tunge2 MACH_TUNGE2 TUNGE2 844
+ixbbm MACH_IXBBM IXBBM 845
+mx27ads MACH_MX27 MX27 846
+ax8004 MACH_AX8004 AX8004 847
+at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
+loft MACH_LOFT LOFT 849
+magpie MACH_MAGPIE MAGPIE 850
+mx21ads MACH_MX21 MX21 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
+xscale_palmtx MACH_XSCALE_PALMTX XSCALE_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
+xscale_treo650 MACH_XSCALE_PALMTREO650 XSCALE_PALMTREO650 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
+xscale_palmtt5 MACH_XSCALE_PALMTT5 XSCALE_PALMTT5 917
+xscale_palmtc MACH_OMAP_PALMTC OMAP_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
+ml675050_cpu_boa MACH_ML675050_CPU_BOA ML675050_CPU_BOA 943
+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
+mod_270 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
+zire31 MACH_ZIRE31 ZIRE31 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
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes-r0.patch b/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes-r0.patch
new file mode 100644
index 000000000..d77e9d8fb
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes-r0.patch
@@ -0,0 +1,599 @@
+Index: linux-2.6.17/drivers/mtd/nand/cm-x270.c
+===================================================================
+--- linux-2.6.17.orig/drivers/mtd/nand/cm-x270.c 2006-07-18 15:40:10.000000000 +0100
++++ linux-2.6.17/drivers/mtd/nand/cm-x270.c 2006-07-19 15:35:18.000000000 +0100
+@@ -1,7 +1,13 @@
+ /*
+- * drivers/mtd/nand/cm-x270.c
++ * linux/drivers/mtd/nand/cmx270-nand.c
++ *
++ * Copyright (C) 2006 Compulab, Ltd.
++ * Mike Rapoport <mike@compulab.co.il>
++ *
++ * Derived from drivers/mtd/nand/h1910.c
++ * Copyright (C) 2002 Marius Gröger (mag@sysgo.de)
++ * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
+ *
+- * Copyright (c) 2006, 8D Technologies inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+@@ -9,397 +15,269 @@
+ *
+ * Overview:
+ * This is a device driver for the NAND flash device found on the
+- * cm-x270 compulab SBC.
+- *
+- * Changelog:
+- * - April 2006, Raphael Assenat <raph@8d.com>:
+- * Creation of the driver.
++ * CM-X270 board.
+ */
+
+-#include <linux/delay.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/module.h>
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/nand.h>
+ #include <linux/mtd/partitions.h>
+-#include <asm/hardware.h>
++
+ #include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/hardware.h>
+ #include <asm/arch/pxa-regs.h>
+-#include <asm/arch/cm-x270.h>
+
++#define GPIO_NAND_CS (11)
++#define GPIO_NAND_RB (89)
+
+-static struct mtd_info *cmx270_mtd = NULL;
+-static void *cmx270_nand_io_base;
+-#define OFFSET_BASE 0
+-#define OFFSET_CLE 4
+-#define OFFSET_ALE 8
+-
+-#define DEFAULT_NUM_PARTITIONS 1
+-static int nr_partitions;
+-static struct mtd_partition cmx270_default_partition_info[] = {
+- {
+- .name = "rootfs",
+- .offset = 0,
+- .size = MTDPART_SIZ_FULL,
+- },
+-};
++/* This macro needed to ensure in-order operation of GPIO and local
++ * bus. Without both asm command and dummy uncached read there're
++ * states when NAND access is broken. I've looked for such macro(s) in
++ * include/asm-arm but found nothing approptiate.
++ * dmac_clean_range is close, but is makes cache invalidation
++ * unnecessary here and it cannot be used in module
++ */
++#define DRAIN_WB() \
++ do { \
++ unsigned char dummy; \
++ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); \
++ dummy=*((unsigned char*)UNCACHED_ADDR); \
++ } while(0)
+
+-static void cmx270_nand_hwcontrol(struct mtd_info *mtd, int cmd)
+-{
+- udelay(1);
+- switch(cmd)
++/* MTD structure for CM-X270 board */
++static struct mtd_info *cmx270_nand_mtd;
++
++/* remaped IO address of the device */
++static void __iomem *cmx270_nand_io;
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info[] = {
+ {
+- case NAND_CTL_SETNCE:
+- GPCR(CM_X270_GPIO_NAND_CS) = GPIO_bit(CM_X270_GPIO_NAND_CS);
+- break;
+- case NAND_CTL_CLRNCE:
+- GPSR(CM_X270_GPIO_NAND_CS) = GPIO_bit(CM_X270_GPIO_NAND_CS);
+- break;
++ .name = "cmx270-0",
++ .offset = 0,
++ .size = MTDPART_SIZ_FULL
+ }
+- udelay(1);
+-}
+-
+-static int cmx270_nand_device_ready(struct mtd_info *mtd)
+-{
+- /* I was getting ecc errors on reads, but adding this delay
+- made the problem disappear. There is probably a timing
+- issue somewhere. */
+- //ndelay (500);
+- udelay (25);
++};
++#define NUM_PARTITIONS (ARRAY_SIZE(partition_info))
+
+- return GPLR(CM_X270_GPIO_NAND_RB) & GPIO_bit(CM_X270_GPIO_NAND_RB);
+-}
++const char *part_probes[] = { "cmdlinepart", NULL };
+
+-static u_char cmx270_nand_read_byte(struct mtd_info *mtd)
++static u_char cmx270_read_byte(struct mtd_info *mtd)
+ {
+ struct nand_chip *this = mtd->priv;
+-// unsigned long raw = readl(this->IO_ADDR_R);
+- unsigned char res = ( readl(this->IO_ADDR_R) >> 16 ) & 0xff;
+- return res;
+-}
+
+-static void cmx270_nand_write_byte(struct mtd_info *mtd, u_char byte)
+-{
+- struct nand_chip *this = mtd->priv;
+- writel( (byte<<16), this->IO_ADDR_W );
+- udelay(1);
++ return (readl(this->IO_ADDR_R) >> 16);
+ }
+
+-static void cmx270_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++static void cmx270_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
+ {
+ int i;
+ struct nand_chip *this = mtd->priv;
+
+ for (i=0; i<len; i++)
+- writel((buf[i]<<16), this->IO_ADDR_W);
+- udelay(1);
++ writel((*buf++ << 16), this->IO_ADDR_W);
+ }
+
+-static void cmx270_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
++static void cmx270_read_buf(struct mtd_info *mtd, u_char *buf, int len)
+ {
+ int i;
+ struct nand_chip *this = mtd->priv;
+
+ for (i=0; i<len; i++)
+- buf[i] = (readl(this->IO_ADDR_R) >> 16 ) & 0xff;
+- udelay(1);
++ *buf++ = readl(this->IO_ADDR_R) >> 16;
+ }
+
+-static int cmx270_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++static int cmx270_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
+ {
+ int i;
+ struct nand_chip *this = mtd->priv;
+
+ for (i=0; i<len; i++)
+- if (buf[i] != ((readl(this->IO_ADDR_R) >> 16) & 0xff))
++ if (buf[i] != (u_char)(readl(this->IO_ADDR_R) >> 16))
+ return -EFAULT;
+- udelay(1);
+
+ return 0;
+ }
+
+-static void cmx270_nand_write_ALE(struct mtd_info *mtd, const u_char byte)
++static inline void nand_cs_on(void)
+ {
+- struct nand_chip *this = mtd->priv;
+- writel( byte << 16 , this->IO_ADDR_W + OFFSET_ALE);
+- udelay(1);
++ GPCR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);
+ }
+
+-static void cmx270_nand_write_CLE(struct mtd_info *mtd, const u_char byte)
++static void nand_cs_off(void)
+ {
+- struct nand_chip *this = mtd->priv;
+- writel( byte << 16 , this->IO_ADDR_W + OFFSET_CLE);
+- udelay(1);
++ DRAIN_WB();
++
++ GPSR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);
+ }
+
+-/* Same as nand_core:nand_command() but with different memory
+- * addresses for writing to ALE and CLE and without 16 bit support.
++/*
++ * hardware specific access to control-lines
+ */
+-static void cmx270_nand_command(struct mtd_info *mtd, unsigned command, int column, int page_addr)
++static void cmx270_hwcontrol(struct mtd_info *mtd, int cmd)
+ {
+- register struct nand_chip *this = mtd->priv;
++ struct nand_chip* this = (struct nand_chip *) (mtd->priv);
++ unsigned int nandaddr = (unsigned int)this->IO_ADDR_R;
+
+-// printk("cmd: 0x%02x col: 0x%x page_addr: 0x%x\n",
+-// command, column, page_addr);
+-
+- if (command == NAND_CMD_SEQIN) {
+- int readcmd;
+-
+- if (column >= mtd->oobblock) {
+- /* OOB area */
+- column -= mtd->oobblock;
+- readcmd = NAND_CMD_READOOB;
+- } else if (column < 256) {
+- /* First 256 bytes --> READ0 */
+- readcmd = NAND_CMD_READ0;
+- } else {
+- column -= 256;
+- readcmd = NAND_CMD_READ1;
+- }
+- cmx270_nand_write_CLE(mtd, readcmd);
+- }
+- cmx270_nand_write_CLE(mtd, command);
++ DRAIN_WB();
+
+- if (column != -1 || page_addr != -1) {
+-
+- /* Serially input address */
+- if (column != -1) {
+- cmx270_nand_write_ALE(mtd, column);
+- }
+- if (page_addr != -1) {
+- cmx270_nand_write_ALE(mtd, (unsigned char) (page_addr & 0xff));
+- cmx270_nand_write_ALE(mtd, (unsigned char) ((page_addr >> 8) & 0xff));
+- /* One more address cycle for devices > 32MiB */
+- if (this->chipsize > (32 << 20))
+- cmx270_nand_write_ALE(mtd, (unsigned char) ((page_addr >> 16) & 0x0f));
+- }
+- }
++ switch(cmd) {
+
+- /*
+- * program and erase have their own busy handlers
+- * status and sequential in needs no delay
+- */
+- switch (command) {
+-
+- case NAND_CMD_PAGEPROG:
+- case NAND_CMD_ERASE1:
+- case NAND_CMD_ERASE2:
+- case NAND_CMD_SEQIN:
+- case NAND_CMD_STATUS:
+- return;
+-
+- case NAND_CMD_RESET:
+- if (this->dev_ready)
+- break;
+- udelay(this->chip_delay);
+- cmx270_nand_write_CLE(mtd, NAND_CMD_STATUS);
+- while ( !(this->read_byte(mtd) & 0x40));
+- return;
+-
+- /* This applies to read commands */
+- default:
+- /*
+- * If we don't have access to the busy pin, we apply the given
+- * command delay
+- */
+- if (!this->dev_ready) {
+- udelay(this->chip_delay);
+- return;
+- }
+- }
+-
+- /* Apply this short delay always to ensure that we do wait tWB in
+- * any case on any machine. */
+- ndelay (100);
+- /* wait until command is processed */
+- while (!this->dev_ready(mtd));
+- ndelay (100);
++ case NAND_CTL_SETCLE:
++ nandaddr |= (1 << 2);
++ this->IO_ADDR_R = (void __iomem*)nandaddr;
++ this->IO_ADDR_W = (void __iomem*)nandaddr;
++ break;
++ case NAND_CTL_CLRCLE:
++ nandaddr &= ~(1 << 2);
++ this->IO_ADDR_R = (void __iomem*)nandaddr;
++ this->IO_ADDR_W = (void __iomem*)nandaddr;
++ break;
++
++ case NAND_CTL_SETALE:
++ nandaddr |= (1 << 3);
++ this->IO_ADDR_R = (void __iomem*)nandaddr;
++ this->IO_ADDR_W = (void __iomem*)nandaddr;
++ break;
++ case NAND_CTL_CLRALE:
++ nandaddr &= ~(1 << 3);
++ this->IO_ADDR_R = (void __iomem*)nandaddr;
++ this->IO_ADDR_W = (void __iomem*)nandaddr;
++ break;
++
++ case NAND_CTL_SETNCE:
++ nand_cs_on();
++ break;
++ case NAND_CTL_CLRNCE:
++ nand_cs_off();
++ break;
++ }
++
++ DRAIN_WB();
+ }
+
+-/* Same as nand_core:nand_command_lp() but with different memory
+- * addresses for writing to ALE and CLE and without 16 bit support.
++
++/*
++ * read device ready pin
+ */
+-static void cmx270_nand_command_lp (struct mtd_info *mtd, unsigned command, int column, int page_addr)
++static int cmx270_device_ready(struct mtd_info *mtd)
+ {
+- register struct nand_chip *this = mtd->priv;
+-
+- /* Emulate NAND_CMD_READOOB */
+- if (command == NAND_CMD_READOOB) {
+- column += mtd->oobblock;
+- command = NAND_CMD_READ0;
+-// printk("Read OOB: column: $%x, page: $%x\n", column, page_addr);
+- }
+-
+- /* Write out the command to the device. */
+- cmx270_nand_write_CLE(mtd, command);
+-
+- if (column != -1 || page_addr != -1) {
+-
+- /* Serially input address */
+- if (column != -1) {
+- cmx270_nand_write_ALE(mtd, column & 0xff);
+- cmx270_nand_write_ALE(mtd, column >> 8);
+- if ((column >> 8) > 0xf) {
+- printk("out of range column\n");
+- }
+- }
+- if (page_addr != -1) {
+- cmx270_nand_write_ALE(mtd, (unsigned char) (page_addr & 0xff));
+- cmx270_nand_write_ALE(mtd, (unsigned char) ((page_addr >> 8) & 0xff));
+- /* One more address cycle for devices > 128MiB */
+- if (this->chipsize > (128 << 20)) {
+- cmx270_nand_write_ALE(mtd, (unsigned char) ((page_addr >> 16) & 0xff));
+- }
+- }
+- }
++ DRAIN_WB();
+
+- udelay(1);
+-
+- /*
+- * program and erase have their own busy handlers
+- * status and sequential in needs no delay
+- */
+- switch (command) {
+-
+- case NAND_CMD_CACHEDPROG:
+- case NAND_CMD_PAGEPROG:
+- case NAND_CMD_ERASE1:
+- case NAND_CMD_ERASE2:
+- case NAND_CMD_SEQIN:
+- case NAND_CMD_STATUS:
+- case NAND_CMD_DEPLETE1:
+- return;
+-
+- /*
+- * read error status commands require only a short delay
+- */
+- case NAND_CMD_STATUS_ERROR:
+- case NAND_CMD_STATUS_ERROR0:
+- case NAND_CMD_STATUS_ERROR1:
+- case NAND_CMD_STATUS_ERROR2:
+- case NAND_CMD_STATUS_ERROR3:
+- udelay(this->chip_delay);
+- return;
+-
+- case NAND_CMD_RESET:
+- if (this->dev_ready)
+- break;
+- udelay(this->chip_delay);
+- cmx270_nand_write_CLE(mtd, NAND_CMD_STATUS);
+- while ( !(this->read_byte(mtd) & NAND_STATUS_READY));
+- return;
+-
+- case NAND_CMD_READ0:
+- /* Write out the start read command */
+- cmx270_nand_write_CLE(mtd, NAND_CMD_READSTART);
+- /* Fall through into ready check */
+-
+- /* This applies to read commands */
+- default:
+- /*
+- * If we don't have access to the busy pin, we apply the given
+- * command delay
+- */
+- if (!this->dev_ready) {
+- udelay (this->chip_delay);
+- return;
+- }
+- }
+-
+- /* Apply this short delay always to ensure that we do wait tWB in
+- * any case on any machine. */
+- ndelay (100);
+- /* wait until command is processed */
+- while (!this->dev_ready(mtd));
++ return (GPLR(GPIO_NAND_RB) & GPIO_bit(GPIO_NAND_RB));
+ }
+
+-
+-#ifdef CONFIG_MTD_PARTITIONS
+-const char *part_probes[] = { "cmdlinepart", NULL };
+-#endif
+-
+-int __init cmx270_nand_init(void)
++/*
++ * Main initialization routine
++ */
++static int __devinit cmx270_init(void)
+ {
+ struct nand_chip *this;
+- struct mtd_partition* cmx270_partition_info;
+- int err = 0;
+-
+- pxa_gpio_mode(CM_X270_GPIO_NAND_RB);
++ const char *part_type;
++ struct mtd_partition *mtd_parts;
++ int mtd_parts_nb = 0;
++ int ret;
+
+- GPSR(CM_X270_GPIO_NAND_CS) = GPIO_bit(CM_X270_GPIO_NAND_CS);
+- pxa_gpio_mode(CM_X270_GPIO_NAND_CS | GPIO_OUT);
+-
+ /* Allocate memory for MTD device structure and private data */
+- cmx270_mtd = kmalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip),
+- GFP_KERNEL);
+- if (!cmx270_mtd) {
+- printk(KERN_WARNING "Unable to allocate cm-x270 NAND mtd device structure.\n");
+- err = -ENOMEM;
+- goto out;
++ cmx270_nand_mtd = kzalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip),
++ GFP_KERNEL);
++ if (!cmx270_nand_mtd) {
++ printk("Unable to allocate CM-X270 NAND MTD device structure.\n");
++ return -ENOMEM;
+ }
+
+- /* map physical address */
+- cmx270_nand_io_base = ioremap(CM_X270_NAND_PHYS, 0x100);
+- if (!cmx270_nand_io_base) {
+- err = -EIO;
+- goto out_mtd;
++ cmx270_nand_io = ioremap(PXA_CS1_PHYS, 12);
++ if (!cmx270_nand_io) {
++ printk("Unable to ioremap NAND device\n");
++ ret = -EINVAL;
++ goto err1;
+ }
+
+ /* Get pointer to private data */
+- this = (struct nand_chip *)(&cmx270_mtd[1]);
+-
+- /* Initialize structures */
+- memset((char *) cmx270_mtd, 0, sizeof(struct mtd_info));
+- memset((char *) this, 0, sizeof(struct nand_chip));
++ this = (struct nand_chip *)(&cmx270_nand_mtd[1]);
+
+ /* Link the private data with the MTD structure */
+- cmx270_mtd->priv = this;
++ cmx270_nand_mtd->owner = THIS_MODULE;
++ cmx270_nand_mtd->priv = this;
+
+- this->IO_ADDR_R = cmx270_nand_io_base;
+- this->IO_ADDR_W = cmx270_nand_io_base;
+- this->read_byte = cmx270_nand_read_byte;
+- this->write_byte = cmx270_nand_write_byte;
+- this->write_buf = cmx270_nand_write_buf;
+- this->read_buf = cmx270_nand_read_buf;
+- this->verify_buf = cmx270_nand_verify_buf;
+- this->hwcontrol = cmx270_nand_hwcontrol;
+- this->dev_ready = cmx270_nand_device_ready;
+- this->cmdfunc = cmx270_nand_command_lp;
+- this->chip_delay = 25;
++ /* insert callbacks */
++ this->IO_ADDR_R = cmx270_nand_io;
++ this->IO_ADDR_W = cmx270_nand_io;
++ this->hwcontrol = cmx270_hwcontrol;
++ this->dev_ready = cmx270_device_ready;
++
++ /* 15 us command delay time */
++ this->chip_delay = 20;
+ this->eccmode = NAND_ECC_SOFT;
+
+- /* Scan to find existance of the device */
+- if (nand_scan(cmx270_mtd, 1)) {
+- err = -ENXIO;
+- goto out_ior;
++ /* read/write functions */
++ this->read_byte = cmx270_read_byte;
++ this->read_buf = cmx270_read_buf;
++ this->write_buf = cmx270_write_buf;
++ this->verify_buf = cmx270_verify_buf;
++
++ /* Scan to find existence of the device */
++ if (nand_scan (cmx270_nand_mtd, 1)) {
++ printk(KERN_NOTICE "No NAND device\n");
++ ret = -ENXIO;
++ goto err2;
++ }
++
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ mtd_parts_nb = parse_mtd_partitions(cmx270_nand_mtd, part_probes,
++ &mtd_parts, 0);
++ if (mtd_parts_nb > 0)
++ part_type = "command line";
++ else
++ mtd_parts_nb = 0;
++#endif
++ if (!mtd_parts_nb) {
++ mtd_parts = partition_info;
++ mtd_parts_nb = NUM_PARTITIONS;
++ part_type = "static";
+ }
+
+ /* Register the partitions */
+- cmx270_mtd->name = "cmx270-mtd";
+- nr_partitions = parse_mtd_partitions(cmx270_mtd, part_probes, &cmx270_partition_info, 0);
+- if (nr_partitions <= 0) {
+- nr_partitions = DEFAULT_NUM_PARTITIONS;
+- cmx270_partition_info = cmx270_default_partition_info;
+- }
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ ret = add_mtd_partitions(cmx270_nand_mtd, mtd_parts, mtd_parts_nb);
++ if (ret)
++ goto err2;
++
++ /* Return happy */
++ return 0;
++
++err2:
++ iounmap(cmx270_nand_io);
++err1:
++ kfree(cmx270_nand_mtd);
++
++ return ret;
+
+- add_mtd_partitions(cmx270_mtd, cmx270_partition_info, nr_partitions);
+-
+- goto out;
+-
+-out_ior:
+- iounmap((void*) cmx270_nand_io_base);
+-out_mtd:
+- kfree(cmx270_mtd);
+-out:
+- return err;
+ }
+-module_init(cmx270_nand_init);
++module_init(cmx270_init);
+
+-static void __exit cmx270_nand_cleanup(void)
++/*
++ * Clean up routine
++ */
++static void __devexit cmx270_cleanup(void)
+ {
+- nand_release(cmx270_mtd);
+- kfree(cmx270_mtd);
++ /* Release resources, unregister device */
++ nand_release(cmx270_nand_mtd);
++
++ iounmap(cmx270_nand_io);
++
++ /* Free the MTD device structure */
++ kfree (cmx270_nand_mtd);
+ }
++module_exit(cmx270_cleanup);
+
+ MODULE_LICENSE("GPL");
+-MODULE_AUTHOR("Raphael Assenat <raph@8d.com>");
+-MODULE_DESCRIPTION("NAND flash driver for cm-x270 boards");
+-
++MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
++MODULE_DESCRIPTION("NAND flash driver for Compulab CM-X270 Module");
diff --git a/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes1-r0.patch b/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes1-r0.patch
new file mode 100644
index 000000000..da00e1f8e
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270-2.6.17/mtd_fixes1-r0.patch
@@ -0,0 +1,15 @@
+Index: linux-2.6.17/drivers/mtd/nand/cm-x270.c
+===================================================================
+--- linux-2.6.17.orig/drivers/mtd/nand/cm-x270.c 2006-07-19 16:47:08.000000000 +0100
++++ linux-2.6.17/drivers/mtd/nand/cm-x270.c 2006-07-19 16:55:23.000000000 +0100
+@@ -184,6 +184,10 @@
+ int mtd_parts_nb = 0;
+ int ret;
+
++ pxa_gpio_mode(GPIO_NAND_RB);
++ GPSR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);
++ pxa_gpio_mode(GPIO_NAND_CS | GPIO_OUT);
++
+ /* Allocate memory for MTD device structure and private data */
+ cmx270_nand_mtd = kzalloc(sizeof(struct mtd_info) +
+ sizeof(struct nand_chip),
diff --git a/openembedded/packages/linux/linux-cmx270_2.6.17.bb b/openembedded/packages/linux/linux-cmx270_2.6.17.bb
new file mode 100644
index 000000000..d9cdd7e9e
--- /dev/null
+++ b/openembedded/packages/linux/linux-cmx270_2.6.17.bb
@@ -0,0 +1,40 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel CM-X270"
+LICENSE = "GPL"
+PR = "r7"
+
+SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \
+ http://raph.people.8d.com/kernels/8d-cmx2xx-2.6.17.1-june21.diff;patch=1 \
+ http://raph.people.8d.com/kernels/hardcode-archID.diff;patch=1 \
+ file://cm_x2xx_mbx.patch;patch=1 \
+ file://add_2700g_plat-r0.patch;patch=1 \
+ file://mtd_fixes-r0.patch;patch=1 \
+ file://mtd_fixes1-r0.patch;patch=1 \
+ file://mach-types \
+ file://defconfig"
+
+S = "${WORKDIR}//linux-2.6.17"
+
+KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}"
+
+inherit kernel
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = "cmx270"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ install -m 0644 ${WORKDIR}/mach-types ${S}/arch/arm/tools/mach-types
+ oe_runmake oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR}/images
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+KERNEL_RELEASE = "2.6.17" \ No newline at end of file