diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index e16f8e3..764a608 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -72,12 +72,17 @@ void __init pxa_set_mci_info(struct pxamci_platform_data *info)
 	pxa_register_device(&pxa_device_mci, info);
 }
 
-
-static struct pxa2xx_udc_mach_info pxa_udc_info;
+void __init pxa_set_mci_parent(struct device *parent_dev)
+{
+	pxa_device_mci.dev.parent = parent_dev;
+}
 
 void __init pxa_set_udc_info(struct pxa2xx_udc_mach_info *info)
 {
-	memcpy(&pxa_udc_info, info, sizeof *info);
+	if (cpu_is_pxa27x())
+		pxa_register_device(&pxa27x_device_udc, info);
+	else if (cpu_is_pxa25x())
+		pxa_register_device(&pxa27x_device_udc, info);
 }
 
 static struct resource pxa2xx_udc_resources[] = {
@@ -101,7 +106,6 @@ struct platform_device pxa25x_device_udc = {
 	.resource	= pxa2xx_udc_resources,
 	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
 	.dev		=  {
-		.platform_data	= &pxa_udc_info,
 		.dma_mask	= &udc_dma_mask,
 	}
 };
@@ -112,11 +116,16 @@ struct platform_device pxa27x_device_udc = {
 	.resource	= pxa2xx_udc_resources,
 	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
 	.dev		=  {
-		.platform_data	= &pxa_udc_info,
 		.dma_mask	= &udc_dma_mask,
 	}
 };
 
+void __init pxa_set_udc_parent(struct device *parent_dev)
+{
+	pxa25x_device_udc.dev.parent = parent_dev;
+	pxa27x_device_udc.dev.parent = parent_dev;
+}
+
 static struct resource pxafb_resources[] = {
 	[0] = {
 		.start	= 0x44000000,
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 34253f0..405cc35 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -160,6 +160,8 @@ static int ezx_mci_init(struct device *dev,
 	return err;
 }
 
+extern void memdebug(const char *fmt, ...);
+
 static int ezx_pcap_mmcsd_voltage(unsigned int vdd)
 {
 	/* 7 is the active bit in MMC_VDD_165_195 */
@@ -189,6 +191,7 @@ static int ezx_pcap_mmcsd_power(int on)
 
 static void ezx_mci_setpower(struct device *dev, unsigned int vdd)
 {
+	memdebug("%s: %d\n", __func__, vdd);
 	ezx_pcap_mmcsd_voltage(vdd);
 	ezx_pcap_mmcsd_power(1);
 }
@@ -269,7 +272,7 @@ static unsigned long ezx_pin_config[] __initdata = {
 #if defined(CONFIG_MACH_EZX_A780) || defined(CONFIG_MACH_EZX_E680)
 static unsigned long gen1_pin_config[] __initdata = {
 	/* flip / lockswitch */
-	GPIO12_GPIO,
+	GPIO12_GPIO | WAKEUP_ON_EDGE_BOTH,
 
 	/* bluetooth (bcm2035) */
 	GPIO14_GPIO | WAKEUP_ON_LEVEL_HIGH,	/* HOSTWAKE */
@@ -834,6 +837,14 @@ static struct pxa2xx_spi_master ezx_spi_masterinfo = {
 	.enable_dma     = 1,
 };
 
+static struct platform_device pxa2xx_spi_device = {
+	.name		= "pxa2xx-spi",
+	.id		= 1,
+	.dev		= {
+		.platform_data = &ezx_spi_masterinfo,
+	},
+};
+
 static struct spi_board_info ezx_spi_boardinfo[] __initdata = {
 	{
 		.modalias        = "ezx-pcap",
@@ -941,9 +952,7 @@ static struct gpio_keys_button a780_buttons[] = {
 		.active_low = 0,
 		.desc = "A780 flip lid",
 		.type = EV_SW,
-		/*
 		.wakeup = 1,
-		*/
 	},
 };
 
@@ -1108,6 +1117,8 @@ static struct i2c_board_info __initdata a780_i2c_board_info[] = {
 
 static void __init a780_init(void)
 {
+	struct platform_device *spi_pd;
+
 	pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config));
 	pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
 	pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config));
@@ -1118,14 +1129,19 @@ static void __init a780_init(void)
 	gpio_request(GPIO24_PCAP_CS, "PCAP CS");
 	gpio_direction_output(GPIO24_PCAP_CS, 1);
 	ezx_pcap_platform_data.config = PCAP_SECOND_PORT;
-	pxa2xx_set_spi_info(1, &ezx_spi_masterinfo);
+//	pxa2xx_set_spi_info(1, &ezx_spi_masterinfo);
+	spi_pd = platform_device_alloc("pxa2xx-spi", 1);
+	spi_pd->dev.platform_data = &ezx_spi_masterinfo;
+	platform_device_add(spi_pd);
 	spi_register_board_info(ARRAY_AND_SIZE(ezx_spi_boardinfo));
 
 	pxa_set_ohci_info(&ezx_ohci_platform_data);
 
+	pxa_set_mci_parent(&spi_pd->dev);
 	pxa_set_mci_info(&ezx_mci_platform_data);
 
 	UP2OCR = UP2OCR_SEOS(2);
+	pxa_set_udc_parent(&spi_pd->dev);
 	pxa_set_udc_info(&ezx_udc_info);
 
 	set_pxa_fb_info(&ezx_fb_info_1);
diff --git a/arch/arm/mach-pxa/include/mach/mmc.h b/arch/arm/mach-pxa/include/mach/mmc.h
index 6d1304c..d5fe92d 100644
--- a/arch/arm/mach-pxa/include/mach/mmc.h
+++ b/arch/arm/mach-pxa/include/mach/mmc.h
@@ -17,6 +17,7 @@ struct pxamci_platform_data {
 };
 
 extern void pxa_set_mci_info(struct pxamci_platform_data *info);
+extern void pxa_set_mci_parent(struct device *parent_dev);
 extern void pxa3xx_set_mci2_info(struct pxamci_platform_data *info);
 extern void pxa3xx_set_mci3_info(struct pxamci_platform_data *info);
 
diff --git a/arch/arm/mach-pxa/include/mach/udc.h b/arch/arm/mach-pxa/include/mach/udc.h
index 2f82332..e2e4066 100644
--- a/arch/arm/mach-pxa/include/mach/udc.h
+++ b/arch/arm/mach-pxa/include/mach/udc.h
@@ -5,4 +5,4 @@
 #include <asm/mach/udc_pxa2xx.h>
 
 extern void pxa_set_udc_info(struct pxa2xx_udc_mach_info *info);
-
+extern void pxa_set_udc_parent(struct device *parent_dev);
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c
index 33626de..8c51934 100644
--- a/arch/arm/mach-pxa/mfp-pxa2xx.c
+++ b/arch/arm/mach-pxa/mfp-pxa2xx.c
@@ -346,9 +346,9 @@ static int pxa2xx_mfp_resume(struct sys_device *d)
 	int i;
 
 	for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) {
+		GPDR(i * 32) = saved_gpdr[i];
 		GAFR_L(i) = saved_gafr[0][i];
 		GAFR_U(i) = saved_gafr[1][i];
-		GPDR(i * 32) = saved_gpdr[i];
 	}
 	PSSR = PSSR_RDH | PSSR_PH;
 	return 0;
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 411bec5..008ef47 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -269,6 +269,7 @@ static int pxa27x_cpu_pm_prepare(void)
 {
 	/* set resume return address */
 	PSPR = virt_to_phys(pxa_cpu_resume);
+//*(unsigned long *)(phys_to_virt(0xa0000000)) = 0xFFFFFFFF;
 	return 0;
 }
 
@@ -276,6 +277,7 @@ static void pxa27x_cpu_pm_finish(void)
 {
 	/* ensure not to come back here if it wasn't intended */
 	PSPR = 0;
+	*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000003;
 }
 
 static struct pxa_cpu_pm_fns pxa27x_cpu_pm_fns = {
@@ -347,7 +349,6 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
 }
 
 static struct platform_device *devices[] __initdata = {
-	&pxa27x_device_udc,
 	&pxa_device_ffuart,
 	&pxa_device_btuart,
 	&pxa_device_stuart,
diff --git a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S
index a62c837..49bd95b 100644
--- a/arch/arm/mach-pxa/sleep.S
+++ b/arch/arm/mach-pxa/sleep.S
@@ -329,6 +329,10 @@ pxa_cpu_do_suspend:
 	.data
 	.align 5
 ENTRY(pxa_cpu_resume)
+	ldr	r0, =0xa0000000
+	mov	r1, #1
+	str	r1, [r0]
+
 	mov	r0, #PSR_I_BIT | PSR_F_BIT | SVC_MODE	@ set SVC, irqs off
 	msr	cpsr_c, r0
 
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 34df4d9..426d9b6 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -268,7 +268,7 @@ static unsigned long __init bootmem_init_node(int node, struct meminfo *mi)
 	 */
 	reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
 			     boot_pages << PAGE_SHIFT, BOOTMEM_DEFAULT);
-
+	reserve_bootmem_node(pgdat, 0xac000000, 16*1024*1024, BOOTMEM_DEFAULT);
 	return end_pfn;
 }
 
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 349a101..dfbc440 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -1,3 +1,4 @@
+#define DEBUG
 /*
  * platform.c - platform 'pseudo' bus for legacy devices
  *
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index 670c9d6..b7967ce 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -502,8 +502,11 @@ static void dpm_complete(pm_message_t state)
  */
 void device_resume(pm_message_t state)
 {
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000021;
 	might_sleep();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000022;
 	dpm_resume(state);
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000023;
 	dpm_complete(state);
 }
 EXPORT_SYMBOL_GPL(device_resume);
diff --git a/drivers/char/ezx-bp.c b/drivers/char/ezx-bp.c
index c96cdc9..50c94e2 100644
--- a/drivers/char/ezx-bp.c
+++ b/drivers/char/ezx-bp.c
@@ -202,6 +202,7 @@ static int ezxbp_resume(struct platform_device *dev)
 {
 	DEBUGP("bp resume!\n");
 	gpio_set_value(bp->ap_rdy, 1);
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000403;
 	return 0;
 }
 
diff --git a/drivers/input/touchscreen/pcap_ts.c b/drivers/input/touchscreen/pcap_ts.c
index a7ff2e2..a691b99 100644
--- a/drivers/input/touchscreen/pcap_ts.c
+++ b/drivers/input/touchscreen/pcap_ts.c
@@ -217,10 +217,10 @@ static int pcap_ts_suspend(struct platform_device *dev, pm_message_t state)
 
 static int pcap_ts_resume(struct platform_device *dev)
 {
-	u32 tmp;
+/*	u32 tmp;
 	ezx_pcap_read(PCAP_REG_ADC, &tmp);
 	tmp &= ~PCAP_ADC_TS_REF_LOWPWR;
-	ezx_pcap_write(PCAP_REG_ADC, tmp);
+	ezx_pcap_write(PCAP_REG_ADC, tmp); */
 	return 0;
 }
 #endif
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 836a9ed..15f59c4 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -30,7 +30,7 @@ static struct pcap_chip pcap;
 static LIST_HEAD(event_list);
 static DEFINE_MUTEX(event_lock);
 static DEFINE_MUTEX(adc_lock);
-
+extern void memdebug(const char *fmt, ...);
 /* IO */
 #define PCAP_BUFSIZE	4
 static int ezx_pcap_putget(u32 *data)
@@ -51,12 +51,13 @@ static int ezx_pcap_putget(u32 *data)
 	*buf = *data;
 	t.tx_buf = (u8 *) buf;
 	t.rx_buf = (u8 *) buf;
+	memdebug("%s: W %08x\n", __func__, *data);
 	status = spi_sync(pcap.spi, &m);
-
 	if (status == 0)
 		*data = *buf;
 	kfree(buf);
 
+	memdebug("%s: R %08x\n", __func__, *data);
 	return status;
 }
 
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index bc11998..e6bb6cd 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -20,3 +20,4 @@ obj-$(CONFIG_SGI_GRU)		+= sgi-gru/
 obj-$(CONFIG_HP_ILO)		+= hpilo.o
 obj-$(CONFIG_C2PORT)		+= c2port/
 obj-y				+= eeprom/
+obj-y += memdebug.o
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index df6ce4a..6193ba5 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -573,7 +573,6 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing)
 static void mmc_power_up(struct mmc_host *host)
 {
 	int bit = fls(host->ocr_avail) - 1;
-
 	host->ios.vdd = bit;
 	if (mmc_host_is_spi(host)) {
 		host->ios.chip_select = MMC_CS_HIGH;
@@ -586,17 +585,14 @@ static void mmc_power_up(struct mmc_host *host)
 	host->ios.bus_width = MMC_BUS_WIDTH_1;
 	host->ios.timing = MMC_TIMING_LEGACY;
 	mmc_set_ios(host);
-
 	/*
 	 * This delay should be sufficient to allow the power supply
 	 * to reach the minimum voltage.
 	 */
 	mmc_delay(2);
-
 	host->ios.clock = host->f_min;
 	host->ios.power_mode = MMC_POWER_ON;
 	mmc_set_ios(host);
-
 	/*
 	 * This delay must be at least 74 clock sizes, or 1 ms, or the
 	 * time required to reach a stable voltage.
@@ -879,13 +875,11 @@ int mmc_resume_host(struct mmc_host *host)
 		host->bus_ops->resume(host);
 	}
 	mmc_bus_put(host);
-
 	/*
 	 * We add a slight delay here so that resume can progress
 	 * in parallel.
 	 */
 	mmc_detect_change(host, 1);
-
 	return 0;
 }
 
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 87e211d..be313f9 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1229,7 +1229,7 @@ static int mmc_spi_probe(struct spi_device *spi)
 	 *
 	 * REVISIT we can't guarantee another device won't be added later...
 	 */
-	if (spi->master->num_chipselect > 1) {
+/*	if (spi->master->num_chipselect > 1) {
 		struct count_children cc;
 
 		cc.n = 0;
@@ -1243,7 +1243,7 @@ static int mmc_spi_probe(struct spi_device *spi)
 
 		dev_warn(&spi->dev, "ASSUMING SPI bus stays unshared!\n");
 	}
-
+*/
 	/* We need a supply of ones to transmit.  This is the only time
 	 * the CPU touches these, so cache coherency isn't a concern.
 	 *
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index 9702ad3..99e553e 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -399,14 +399,11 @@ static int pxamci_get_ro(struct mmc_host *mmc)
 static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 {
 	struct pxamci_host *host = mmc_priv(mmc);
-
 	if (ios->clock) {
 		unsigned long rate = host->clkrate;
 		unsigned int clk = rate / ios->clock;
-
 		if (host->clkrt == CLKRT_OFF)
 			clk_enable(host->clk);
-
 		if (ios->clock == 26000000) {
 			/* to support 26MHz on pxa300/pxa310 */
 			host->clkrt = 7;
@@ -414,7 +411,6 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 			/* to handle (19.5MHz, 26MHz) */
 			if (!clk)
 				clk = 1;
-
 			/*
 			 * clk might result in a lower divisor than we
 			 * desire.  check for that condition and adjust
@@ -435,15 +431,14 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 			clk_disable(host->clk);
 		}
 	}
-
 	if (host->power_mode != ios->power_mode) {
 		host->power_mode = ios->power_mode;
-
 		if (host->pdata && host->pdata->setpower)
 			host->pdata->setpower(mmc_dev(mmc), ios->vdd);
-
 		if (ios->power_mode == MMC_POWER_ON)
 			host->cmdat |= CMDAT_INIT;
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x10101010;
+
 	}
 
 	if (ios->bus_width == MMC_BUS_WIDTH_4)
@@ -705,10 +700,8 @@ static int pxamci_resume(struct platform_device *dev)
 {
 	struct mmc_host *mmc = platform_get_drvdata(dev);
 	int ret = 0;
-
 	if (mmc)
 		ret = mmc_resume_host(mmc);
-
 	return ret;
 }
 #else
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index d0fc4ca..21eec3c 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -175,6 +175,8 @@ struct chip_data {
 
 static void pump_messages(struct work_struct *work);
 
+extern void memdebug(const char *fmt, ...);
+
 static int flush(struct driver_data *drv_data)
 {
 	unsigned long limit = loops_per_jiffy << 1;
@@ -1095,6 +1097,14 @@ static void pump_transfers(unsigned long data)
 	/* after chip select, release the data by enabling service
 	 * requests and interrupts, without changing any mode bits */
 	write_SSCR1(cr1, reg);
+	memdebug("pump_transfersA SSCR0=%08x SSCR1=%08x SSTO=%08x SSPSP=%08x SSSR=%08x\n",
+		read_SSCR0(drv_data->ioaddr), read_SSCR1(drv_data->ioaddr),
+		read_SSTO(drv_data->ioaddr), read_SSPSP(drv_data->ioaddr), read_SSSR(drv_data->ioaddr));
+	udelay(200);
+	memdebug("pump_transfersB SSCR0=%08x SSCR1=%08x SSTO=%08x SSPSP=%08x SSSR=%08x\n",
+		read_SSCR0(drv_data->ioaddr), read_SSCR1(drv_data->ioaddr),
+		read_SSTO(drv_data->ioaddr), read_SSPSP(drv_data->ioaddr), read_SSSR(drv_data->ioaddr));
+
 }
 
 static void pump_messages(struct work_struct *work)
@@ -1626,11 +1636,16 @@ static int pxa2xx_spi_suspend(struct platform_device *pdev, pm_message_t state)
 	int status = 0;
 
 	status = stop_queue(drv_data);
-	if (status != 0)
+	if (status != 0) {
+		memdebug("spi suspend: status error!\n");
 		return status;
+	}
 	write_SSCR0(0, drv_data->ioaddr);
-	clk_disable(ssp->clk);
-
+//	clk_disable(ssp->clk);
+	memdebug("spi suspend ok\n");
+	memdebug("SUSPEND SSCR0=%08x SSCR1=%08x SSTO=%08x SSPSP=%08x\n",
+		read_SSCR0(drv_data->ioaddr), read_SSCR1(drv_data->ioaddr),
+		read_SSTO(drv_data->ioaddr), read_SSPSP(drv_data->ioaddr));
 	return 0;
 }
 
@@ -1640,8 +1655,9 @@ static int pxa2xx_spi_resume(struct platform_device *pdev)
 	struct ssp_device *ssp = drv_data->ssp;
 	int status = 0;
 
+	write_SSCR1(0x740, drv_data->ioaddr);
 	/* Enable the SSP clock */
-	clk_enable(ssp->clk);
+//	clk_enable(ssp->clk);
 
 	/* Start the queue running */
 	status = start_queue(drv_data);
@@ -1649,6 +1665,9 @@ static int pxa2xx_spi_resume(struct platform_device *pdev)
 		dev_err(&pdev->dev, "problem starting queue (%d)\n", status);
 		return status;
 	}
+	memdebug("RESUME SSCR0=%08x SSCR1=%08x SSTO=%08x SSPSP=%08x\n",
+		read_SSCR0(drv_data->ioaddr), read_SSCR1(drv_data->ioaddr),
+		read_SSTO(drv_data->ioaddr), read_SSPSP(drv_data->ioaddr));
 
 	return 0;
 }
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
index 990f40f..b05c40e 100644
--- a/drivers/usb/gadget/pxa27x_udc.c
+++ b/drivers/usb/gadget/pxa27x_udc.c
@@ -2318,7 +2318,7 @@ static int pxa_udc_suspend(struct platform_device *_dev, pm_message_t state)
 				ep->udccsr_value, ep->udccr_value);
 	}
 
-	udc_disable(udc);
+//WM	udc_disable(udc);
 
 	return 0;
 }
@@ -2335,7 +2335,7 @@ static int pxa_udc_resume(struct platform_device *_dev)
 	int i;
 	struct pxa_udc *udc = platform_get_drvdata(_dev);
 	struct pxa_ep *ep;
-
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000301;
 	ep = &udc->pxa_ep[0];
 	udc_ep_writel(ep, UDCCSR, udc->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME));
 	for (i = 1; i < NR_PXA_ENDPOINTS; i++) {
@@ -2346,7 +2346,7 @@ static int pxa_udc_resume(struct platform_device *_dev)
 				ep->udccsr_value, ep->udccr_value);
 	}
 
-	udc_enable(udc);
+//WM	udc_enable(udc);
 	/*
 	 * We do not handle OTG yet.
 	 *
@@ -2358,7 +2358,7 @@ static int pxa_udc_resume(struct platform_device *_dev)
 	 */
 	if (cpu_is_pxa27x())
 		PSSR |= PSSR_OTGPH;
-
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000302;
 	return 0;
 }
 #endif
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 48ff701..248b107 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1632,8 +1632,9 @@ static int pxafb_suspend(struct platform_device *dev, pm_message_t state)
 static int pxafb_resume(struct platform_device *dev)
 {
 	struct pxafb_info *fbi = platform_get_drvdata(dev);
-
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000201;
 	set_ctrlr_state(fbi, C_ENABLE_PM);
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000202;
 	return 0;
 }
 #else
diff --git a/kernel/power/main.c b/kernel/power/main.c
index b4d2190..a3f5f1b 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -354,19 +354,27 @@ int suspend_devices_and_enter(suspend_state_t state)
  Finish:
 	if (suspend_ops->finish)
 		suspend_ops->finish();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000013;
  Resume_devices:
 	suspend_test_start();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000014;
 	device_resume(PMSG_RESUME);
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000015;
 	suspend_test_finish("resume devices");
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000016;
 	resume_console();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000017;
  Close:
 	if (suspend_ops->end)
 		suspend_ops->end();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000018;
 	return error;
 
  Recover_platform:
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x00000019;
 	if (suspend_ops->recover)
 		suspend_ops->recover();
+*(unsigned long *)(phys_to_virt(0xa0000000)) = 0x0000001a;
 	goto Resume_devices;
 }
 
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 8c6b7b0..f758b75 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -1,95 +1,2 @@
-# Makefile for the different targets used to generate full packages of a kernel
-# It uses the generic clean infrastructure of kbuild
-
-# RPM target
-# ---------------------------------------------------------------------------
-# The rpm target generates two rpm files:
-# /usr/src/packages/SRPMS/kernel-2.6.7rc2-1.src.rpm
-# /usr/src/packages/RPMS/i386/kernel-2.6.7rc2-1.<arch>.rpm
-# The src.rpm files includes all source for the kernel being built
-# The <arch>.rpm includes kernel configuration, modules etc.
-#
-# Process to create the rpm files
-# a) clean the kernel
-# b) Generate .spec file
-# c) Build a tar ball, using symlink to make kernel version
-#    first entry in the path
-# d) and pack the result to a tar.gz file
-# e) generate the rpm files, based on kernel.spec
-# - Use /. to avoid tar packing just the symlink
-
-# Do we have rpmbuild, otherwise fall back to the older rpm
-RPM := $(shell if [ -x "/usr/bin/rpmbuild" ]; then echo rpmbuild; \
-	           else echo rpm; fi)
-
-# Remove hyphens since they have special meaning in RPM filenames
-KERNELPATH := kernel-$(subst -,,$(KERNELRELEASE))
-MKSPEC     := $(srctree)/scripts/package/mkspec
-PREV       := set -e; cd ..;
-
-# rpm-pkg
-# ---------------------------------------------------------------------------
-$(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
-	$(CONFIG_SHELL) $(MKSPEC) > $@
-
-rpm-pkg rpm: $(objtree)/kernel.spec FORCE
-	$(MAKE) clean
-	$(PREV) ln -sf $(srctree) $(KERNELPATH)
-	$(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
-	$(PREV) rm $(KERNELPATH)
-
-	set -e; \
-	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
-	set -e; \
-	mv -f $(objtree)/.tmp_version $(objtree)/.version
-
-	$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta ../$(KERNELPATH).tar.gz
-	rm ../$(KERNELPATH).tar.gz
-
-clean-files := $(objtree)/kernel.spec
-
-# binrpm-pkg
-# ---------------------------------------------------------------------------
-$(objtree)/binkernel.spec: $(MKSPEC) $(srctree)/Makefile
-	$(CONFIG_SHELL) $(MKSPEC) prebuilt > $@
-
-binrpm-pkg: $(objtree)/binkernel.spec FORCE
-	$(MAKE) KBUILD_SRC=
-	set -e; \
-	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
-	set -e; \
-	mv -f $(objtree)/.tmp_version $(objtree)/.version
-
-	$(RPM) $(RPMOPTS) --define "_builddir $(srctree)" --target \
-		$(UTS_MACHINE) -bb $<
-
-clean-files += $(objtree)/binkernel.spec
-
-# Deb target
-# ---------------------------------------------------------------------------
-deb-pkg: FORCE
-	$(MAKE) KBUILD_SRC=
-	$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
-
-clean-dirs += $(objtree)/debian/
-
-
-# tarball targets
-# ---------------------------------------------------------------------------
-tar%pkg: FORCE
-	$(MAKE) KBUILD_SRC=
-	$(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@
-
-clean-dirs += $(objtree)/tar-install/
-
-
-# Help text displayed when executing 'make help'
-# ---------------------------------------------------------------------------
-help: FORCE
-	@echo '  rpm-pkg         - Build both source and binary RPM kernel packages'
-	@echo '  binrpm-pkg      - Build only the binary kernel package'
-	@echo '  deb-pkg         - Build the kernel as an deb package'
-	@echo '  tar-pkg         - Build the kernel as an uncompressed tarball'
-	@echo '  targz-pkg       - Build the kernel as a gzip compressed tarball'
-	@echo '  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball'
-
+# Dummy file 
+help:
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
deleted file mode 100644
index 1264b8e..0000000
--- a/scripts/package/builddeb
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/bin/sh
-#
-# builddeb 1.2
-# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
-#
-# Simple script to generate a deb package for a Linux kernel. All the
-# complexity of what to do with a kernel after it is installer or removed
-# is left to other scripts and packages: they can install scripts in the
-# /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on
-# package install and removal.
-
-set -e
-
-# Some variables and settings used throughout the script
-version=$KERNELRELEASE
-revision=`cat .version`
-tmpdir="$objtree/debian/tmp"
-fwdir="$objtree/debian/fwtmp"
-packagename=linux-$version
-fwpackagename=linux-firmware-image
-
-if [ "$ARCH" == "um" ] ; then
-	packagename=user-mode-linux-$version
-fi
-
-# Setup the directory structure
-rm -rf "$tmpdir" "$fwdir"
-mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
-mkdir -p "$fwdir/DEBIAN" "$fwdir/lib"
-if [ "$ARCH" == "um" ] ; then
-	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
-fi
-
-# Build and install the kernel
-if [ "$ARCH" == "um" ] ; then
-	$MAKE linux
-	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
-	cp .config "$tmpdir/usr/share/doc/$packagename/config"
-	gzip "$tmpdir/usr/share/doc/$packagename/config"
-	cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
-else 
-	cp System.map "$tmpdir/boot/System.map-$version"
-	cp .config "$tmpdir/boot/config-$version"
-	cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
-fi
-
-if grep -q '^CONFIG_MODULES=y' .config ; then
-	INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
-	if [ "$ARCH" == "um" ] ; then
-		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
-		rmdir "$tmpdir/lib/modules/$version"
-	fi
-fi
-
-# Install the maintainer scripts
-for script in postinst postrm preinst prerm ; do
-	mkdir -p "$tmpdir/etc/kernel/$script.d"
-	cat <<EOF > "$tmpdir/DEBIAN/$script"
-#!/bin/sh
-
-set -e
-
-test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
-exit 0
-EOF
-	chmod 755 "$tmpdir/DEBIAN/$script"
-done
-
-name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
-# Generate a simple changelog template
-cat <<EOF > debian/changelog
-linux ($version-$revision) unstable; urgency=low
-
-  * A standard release
-
- -- $name  $(date -R)
-EOF
-
-# Generate a control file
-if [ "$ARCH" == "um" ]; then
-
-cat <<EOF > debian/control
-Source: linux
-Section: base
-Priority: optional
-Maintainer: $name
-Standards-Version: 3.6.1
-
-Package: $packagename
-Provides: kernel-image-$version, linux-image-$version
-Architecture: any
-Description: User Mode Linux kernel, version $version
- User-mode Linux is a port of the Linux kernel to its own system call
- interface.  It provides a kind of virtual machine, which runs Linux
- as a user process under another Linux kernel.  This is useful for
- kernel development, sandboxes, jails, experimentation, and
- many other things.
- .
- This package contains the Linux kernel, modules and corresponding other
- files version $version
-EOF
-
-else
-cat <<EOF > debian/control
-Source: linux
-Section: base
-Priority: optional
-Maintainer: $name
-Standards-Version: 3.6.1
-
-Package: $packagename
-Provides: kernel-image-$version, linux-image-$version
-Suggests: $fwpackagename
-Architecture: any
-Description: Linux kernel, version $version
- This package contains the Linux kernel, modules and corresponding other
- files version $version
-EOF
-fi
-
-# Fix some ownership and permissions
-chown -R root:root "$tmpdir"
-chmod -R go-w "$tmpdir"
-
-# Do we have firmware? Move it out of the way and build it into a package.
-if [ -e "$tmpdir/lib/firmware" ]; then
-	mv "$tmpdir/lib/firmware" "$fwdir/lib/"
-
-	cat <<EOF >> debian/control
-
-Package: $fwpackagename
-Architecture: all
-Description: Linux kernel firmware, version $version
- This package contains firmware from the Linux kernel, version $version
-EOF
-
-	dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir"
-	dpkg --build "$fwdir" ..
-fi
-
-# Perform the final magic
-dpkg-gencontrol -isp -p$packagename
-dpkg --build "$tmpdir" ..
-
-exit 0
-
