On Wed, Feb 17, 2010 at 10:32 AM, Stanislav Brabec <u...@penguin.cz> wrote:

> Hans Henry von Tresckow wrote:
>
> >         I'd like to keep only one 2.6x kernel and concentrate on
> >         2.6.3x for the future.
>
> If you do it in the OE, please keep patches that were never ported to
> 2.6.26-RP. I am aware of these two:
> - Support for 320x240 video mode
> - Working USB UDC support
>
> --
> Stanislav Brabec
> http://www.penguin.cz/~utx/zaurus <http://www.penguin.cz/%7Eutx/zaurus>
>
I got linux-rp_2.6.26 to build using this patch, but it hangs after
uncompressing. I will try to take another stab at it tomorrow.





> _______________________________________________
> Zaurus-devel mailing list
> Zaurus-devel@lists.linuxtogo.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/zaurus-devel
>



-- 
Henry von Tresckow (hvontres)
From 8b3be64bda40af63804c17c12feeeac5888675f3 Mon Sep 17 00:00:00 2001
From: Henry von Tresckow <hvont...@gmail.com>
Date: Sat, 6 Mar 2010 16:39:03 -0800
Subject: [PATCH] linux-rp: make 2.6.26 complie for poodle

compiles but hangs at: "Uncompressing Linux..... done, booting the kernel."

Signed-off-by: Henry von Tresckow <hvont...@gmail.com>
---
 recipes/linux/linux-rp-2.6.26/defconfig-poodle     |    6 +-
 recipes/linux/linux-rp-2.6.26/poodle_pm-r7.patch   |  481 ++++++++++++++++++++
 .../linux-rp-2.6.26/poodle_serial_vcc-r1.patch     |   30 ++
 recipes/linux/linux-rp-2.6.26/poodle_ts.patch      |   22 +
 recipes/linux/linux-rp-2.6.26/pxafb.patch          |   13 +
 recipes/linux/linux-rp_2.6.26.bb                   |   13 +-
 6 files changed, 554 insertions(+), 11 deletions(-)
 create mode 100644 recipes/linux/linux-rp-2.6.26/poodle_pm-r7.patch
 create mode 100644 recipes/linux/linux-rp-2.6.26/poodle_serial_vcc-r1.patch
 create mode 100644 recipes/linux/linux-rp-2.6.26/poodle_ts.patch
 create mode 100644 recipes/linux/linux-rp-2.6.26/pxafb.patch

diff --git a/recipes/linux/linux-rp-2.6.26/defconfig-poodle b/recipes/linux/linux-rp-2.6.26/defconfig-poodle
index 9d5e340..274789f 100644
--- a/recipes/linux/linux-rp-2.6.26/defconfig-poodle
+++ b/recipes/linux/linux-rp-2.6.26/defconfig-poodle
@@ -767,11 +767,7 @@ CONFIG_MII=m
 # CONFIG_WLAN_PRE80211 is not set
 CONFIG_WLAN_80211=y
 # CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS=m
-# CONFIG_LIBERTAS_USB is not set
-CONFIG_LIBERTAS_CS=m
-# CONFIG_LIBERTAS_SDIO is not set
-# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS is not set
 CONFIG_HERMES=m
 CONFIG_PCMCIA_HERMES=m
 CONFIG_PCMCIA_SPECTRUM=m
diff --git a/recipes/linux/linux-rp-2.6.26/poodle_pm-r7.patch b/recipes/linux/linux-rp-2.6.26/poodle_pm-r7.patch
new file mode 100644
index 0000000..6ad62b1
--- /dev/null
+++ b/recipes/linux/linux-rp-2.6.26/poodle_pm-r7.patch
@@ -0,0 +1,481 @@
+ arch/arm/common/locomo.c          |    6 
+ arch/arm/common/sharpsl_pm.c      |    9 
+ arch/arm/mach-pxa/Kconfig         |    1 
+ arch/arm/mach-pxa/Makefile        |    2 
+ arch/arm/mach-pxa/poodle_pm.c     |  355 ++++++++++++++++++++++++++++++++++++++
+ include/asm-arm/hardware/locomo.h |    5 
+ 6 files changed, 377 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.26/arch/arm/common/sharpsl_pm.c
+===================================================================
+--- linux-2.6.26.orig/arch/arm/common/sharpsl_pm.c	2008-08-05 22:15:07.000000000 -0700
++++ linux-2.6.26/arch/arm/common/sharpsl_pm.c	2008-08-05 22:15:11.000000000 -0700
+@@ -458,6 +458,10 @@
+ {
+ 	int temp, i, buff[5];
+ 
++	/* Some devices don't support this */
++	if (!sharpsl_pm.machinfo->charge_acin_high)
++		return 0;
++
+ 	for (i=0; i<5; i++) {
+ 		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT);
+ 		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN);
+@@ -598,6 +602,9 @@
+ 
+ 	dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n");
+ 
++	if (machine_is_poodle())
++		return 0;
++
+ 	/* Check AC-Adapter */
+ 	acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
+ 
+@@ -664,6 +671,7 @@
+ 		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n");
+ 
+ 		/* AC Check */
++		if (!machine_is_poodle())
+ 		if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0))
+ 			return sharpsl_off_charge_error();
+ 
+@@ -686,6 +694,7 @@
+ 
+ 		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n");
+ 
++		if (!machine_is_poodle())
+ 		if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0))
+ 			return sharpsl_off_charge_error();
+ 
+Index: linux-2.6.26/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.26.orig/arch/arm/mach-pxa/Kconfig	2008-08-05 22:15:05.000000000 -0700
++++ linux-2.6.26/arch/arm/mach-pxa/Kconfig	2008-08-05 22:16:25.000000000 -0700
+@@ -210,6 +210,7 @@
+ 	bool "Enable Sharp SL-5600 (Poodle) Support"
+ 	depends on PXA_SHARPSL_25x
+ 	select SHARP_LOCOMO
++	select SHARPSL_PM
+ 	select PXA_SSP
+ 
+ config MACH_CORGI
+Index: linux-2.6.26/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.26.orig/arch/arm/mach-pxa/Makefile	2008-08-05 22:15:05.000000000 -0700
++++ linux-2.6.26/arch/arm/mach-pxa/Makefile	2008-08-05 22:16:25.000000000 -0700
+@@ -30,7 +30,7 @@
+ obj-$(CONFIG_PXA_SHARP_C7xx)	+= corgi.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o corgi_pm.o
+ obj-$(CONFIG_PXA_SHARP_Cxx00)	+= spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o spitz_pm.o
+ obj-$(CONFIG_MACH_AKITA)	+= akita-ioexp.o
+-obj-$(CONFIG_MACH_POODLE)	+= poodle.o corgi_ssp.o
++obj-$(CONFIG_MACH_POODLE)	+= poodle.o corgi_ssp.o sharpsl_pm.o poodle_pm.o 
+ obj-$(CONFIG_MACH_HX2750)	+= hx2750.o hx2750_test.o
+ obj-$(CONFIG_MACH_PCM027)	+= pcm027.o
+ obj-$(CONFIG_MACH_PCM990_BASEBOARD)	+= pcm990-baseboard.o
+Index: linux-2.6.26/arch/arm/mach-pxa/poodle_pm.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.26/arch/arm/mach-pxa/poodle_pm.c	2008-08-05 22:21:31.000000000 -0700
+@@ -0,0 +1,356 @@
++/*
++ * Battery and Power Management code for the Sharp SL-5600
++ *
++ * Copyright (c) 2006 Richard Purdie
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/stat.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/delay.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/apm-emulation.h>
++#include <asm/irq.h>
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/hardware/scoop.h>
++#include <asm/hardware/locomo.h>
++
++#include <asm/arch/sharpsl.h>
++#include <asm/arch/poodle.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxa2xx-gpio.h>
++#include "sharpsl.h"
++
++#if 0
++#define SHARPSL_CHARGE_ON_VOLT         0x99  /* 2.9V */
++#define SHARPSL_CHARGE_ON_TEMP         0xe0  /* 2.9V */
++#define SHARPSL_CHARGE_ON_ACIN_HIGH    0x9b  /* 6V */
++#define SHARPSL_CHARGE_ON_ACIN_LOW     0x34  /* 2V */
++#define SHARPSL_FATAL_ACIN_VOLT        182   /* 3.45V */
++#define SHARPSL_FATAL_NOACIN_VOLT      170   /* 3.40V */
++#endif
++
++#define SHARPSL_CHARGE_ON_VOLT			1187	// 2.9V
++#define SHARPSL_CHARGE_ON_TEMP			2441
++#define SHARPSL_FATAL_NOACIN_VOLT	1454    // 3.55V
++#define SHARPSL_FATAL_ACIN_VOLT	1474    // 3.60V
++
++
++#if 0
++#define SHARPSL_POWER_MODE_CHECK		1475
++#define SHARPSL_POODLE_FATAL_VOLT		1433
++#define SHARPSL_POODLE_FATAL_NOACIN_FLON_VOLT	1454    // 3.55V
++#define SHARPSL_POODLE_FATAL_NOACIN_FLOFF_VOLT	1433    // 3.50V
++#define SHARPSL_POODLE_FATAL_ACIN_FLON_VOLT	1474    // 3.60V
++#define SHARPSL_POODLE_FATAL_ACIN_FLOFF_VOLT	1454    // 3.55V
++#define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP	5	// 50msec
++#define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT	1	// 10msec
++#define SHARPSL_WAIT_DISCHARGE_ON		5	// 50msec
++#endif
++
++
++struct battery_thresh poodle_battery_levels_fl[] = {
++    {1582, 100},
++    {1527,  75},
++    {1482,  50},
++    {1458,  25},
++    {1404,   5},
++    {   0,   0},
++};
++
++struct battery_thresh poodle_battery_levels_nofl[] = {
++    {1589, 100},
++    {1536,  75},
++    {1490,  50},
++    {1466,  25},
++    {1413,   5},
++    {   0,   0},
++};
++
++struct battery_thresh poodle_battery_levels_acin_fl[] = {
++    {1601, 100},
++    {1536,  75},
++    {1503,  50},
++    {1482,  25},
++    {   0,   5},
++    {   0,   0},
++};
++
++struct battery_thresh poodle_battery_levels_acin_nofl[] = {
++    {1609, 100},
++    {1548,  75},
++    {1527,  50},
++    {1495,  25},
++    {   0,   5},
++    {   0,   0},
++};
++
++static void poodle_charger_init(void)
++{
++	pxa_gpio_mode(POODLE_GPIO_ADC_TEMP_ON | GPIO_OUT);
++	pxa_gpio_mode(POODLE_GPIO_CHRG_ON | GPIO_OUT);
++	pxa_gpio_mode(POODLE_GPIO_BYPASS_ON | GPIO_OUT);
++	pxa_gpio_mode(POODLE_GPIO_ON_KEY | GPIO_IN);
++	sharpsl_pm_pxa_init();
++}
++
++static void poodle_measure_temp(int on)
++{
++	if (on)
++		GPSR(POODLE_GPIO_ADC_TEMP_ON) = GPIO_bit(POODLE_GPIO_ADC_TEMP_ON);
++	else
++		GPCR(POODLE_GPIO_ADC_TEMP_ON) = GPIO_bit(POODLE_GPIO_ADC_TEMP_ON);
++}
++
++extern struct locomo_dev *frontlight_dev;
++
++static void poodle_charge(int on)
++{
++	if (on) {
++		GPSR(POODLE_GPIO_CHRG_ON) = GPIO_bit(POODLE_GPIO_CHRG_ON);
++		locomo_gpio_write(&poodle_locomo_device.dev, POODLE_LOCOMO_GPIO_JK_B, 1);
++	} else {
++		GPCR(POODLE_GPIO_CHRG_ON) = GPIO_bit(POODLE_GPIO_CHRG_ON);
++		locomo_gpio_write(&poodle_locomo_device.dev, POODLE_LOCOMO_GPIO_JK_B, 0);
++	}
++}
++
++static void poodle_discharge(int on)
++{
++	if (on)
++		GPSR(POODLE_GPIO_DISCHARGE_ON) = GPIO_bit(POODLE_GPIO_DISCHARGE_ON);
++	else
++		GPCR(POODLE_GPIO_DISCHARGE_ON) = GPIO_bit(POODLE_GPIO_DISCHARGE_ON);
++}
++
++static void poodle_presuspend(void)
++{
++	int i;
++	unsigned long wakeup_mask;
++
++	/* charging , so CHARGE_ON bit is HIGH during OFF. */
++	if (READ_GPIO_BIT(POODLE_GPIO_CHRG_ON))
++		PGSR1 |= GPIO_bit(POODLE_GPIO_CHRG_ON);
++	else
++		PGSR1 &= ~GPIO_bit(POODLE_GPIO_CHRG_ON);
++
++//	if (READ_GPIO_BIT(CORGI_GPIO_CHRG_UKN))
++//		PGSR1 |= GPIO_bit(CORGI_GPIO_CHRG_UKN);
++//	else
++//		PGSR1 &= ~GPIO_bit(CORGI_GPIO_CHRG_UKN);
++
++	/* Resume on keyboard power key */
++//	PGSR2 = (PGSR2 & ~CORGI_GPIO_ALL_STROBE_BIT) | CORGI_GPIO_STROBE_BIT(0);
++
++	wakeup_mask = GPIO_bit(POODLE_GPIO_ON_KEY) | GPIO_bit(POODLE_GPIO_WAKEUP);
++	wakeup_mask |= GPIO_bit(POODLE_GPIO_AC_IN) | GPIO_bit(POODLE_GPIO_CHRG_FULL);
++	wakeup_mask |= GPIO_bit(POODLE_GPIO_MAIN_BAT_LOW) | GPIO_bit(POODLE_GPIO_CF_CD);
++	wakeup_mask |= GPIO_bit(POODLE_GPIO_HP_IN) | GPIO_bit(POODLE_GPIO_GA_INT) | GPIO_bit(POODLE_GPIO_nSD_INT);
++
++
++//	if (!machine_is_corgi())
++//		GPDR0 &= ~(GPIO_bit(15) | GPIO_bit(8)); /* Float n_CS1 */
++
++	PWER = wakeup_mask | PWER_RTC;
++	PRER = wakeup_mask;
++	PFER = wakeup_mask;
++
++	for (i = 0; i <=15; i++) {
++		if (PRER & PFER & GPIO_bit(i)) {
++			if (GPLR0 & GPIO_bit(i) )
++				PRER &= ~GPIO_bit(i);
++			else
++				PFER &= ~GPIO_bit(i);
++		}
++	}
++}
++
++static void poodle_postsuspend(void)
++{
++//	if (!machine_is_corgi())
++//		GPDR0 |= GPIO_bit(15) | GPIO_bit(8); /* Un-Float n_CS1 */
++}
++
++/*
++ * Check what brought us out of the suspend.
++ * Return: 0 to sleep, otherwise wake
++ */
++static int poodle_should_wakeup(unsigned int resume_on_alarm)
++{
++	int is_resume = 0;
++
++	dev_dbg(sharpsl_pm.dev, "GPLR0 = %x,%x\n", GPLR0, PEDR);
++
++	if ((PEDR & GPIO_bit(POODLE_GPIO_AC_IN))) {
++		if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
++			/* charge on */
++			dev_dbg(sharpsl_pm.dev, "ac insert\n");
++			sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
++		} else {
++			/* charge off */
++			dev_dbg(sharpsl_pm.dev, "ac remove\n");
++			sharpsl_pm_led(SHARPSL_LED_OFF);
++			sharpsl_pm.machinfo->charge(0);
++			sharpsl_pm.charge_mode = CHRG_OFF;
++		}
++	}
++
++	if ((PEDR & GPIO_bit(POODLE_GPIO_CHRG_FULL)))
++		dev_dbg(sharpsl_pm.dev, "Charge full interrupt\n");
++
++	if (PEDR & GPIO_bit(POODLE_GPIO_ON_KEY))
++		is_resume |= GPIO_bit(POODLE_GPIO_ON_KEY);
++
++	if (PEDR & GPIO_bit(POODLE_GPIO_WAKEUP))
++		is_resume |= GPIO_bit(POODLE_GPIO_WAKEUP);
++
++//	if ( (apm_wakeup_factor & GPIO_bit(GPIO_GA_INT)) && (LCM_KIC & 1) ) {
++//		LCM_KIC &= ~0x100;
++//		LCM_ICR &= ~0x100;
++//		is_resume |= GPIO_bit(GPIO_GA_INT);
++//	}
++
++	if (PEDR & GPIO_bit(POODLE_GPIO_CF_STSCHG))
++		is_resume |= GPIO_bit(POODLE_GPIO_CF_STSCHG);
++
++	if (PEDR & GPIO_bit(POODLE_GPIO_nSD_INT))
++		is_resume |= GPIO_bit(POODLE_GPIO_nSD_INT);
++
++	if (PEDR & GPIO_bit(POODLE_GPIO_HP_IN))
++		is_resume |= GPIO_bit(POODLE_GPIO_HP_IN);
++
++	if (resume_on_alarm && (PEDR & PWER_RTC))
++		is_resume |= PWER_RTC;
++
++	dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
++	return is_resume;
++}
++
++static unsigned long poodle_charger_wakeup(void)
++{
++	return ~GPLR0 & ( GPIO_bit(POODLE_GPIO_AC_IN) | GPIO_bit(POODLE_GPIO_ON_KEY) | GPIO_bit(POODLE_GPIO_WAKEUP) );
++}
++
++#define MUX_CHL    6u
++#define BATT_CHL   2u
++
++/* ADS7846 Touch Screen Controller bit definitions */
++#define ADSCTRL_PD0		(1u << 0)	/* PD0 */
++#define ADSCTRL_PD1		(1u << 1)	/* PD1 */
++#define ADSCTRL_DFR		(1u << 2)	/* SER/DFR */
++#define ADSCTRL_MOD		(1u << 3)	/* Mode */
++#define ADSCTRL_ADR_SH	4	/* Address setting */
++#define ADSCTRL_STS		(1u << 7)	/* Start Bit */
++
++int poodle_pm_read_ads7846(int channel)
++{
++	int voltage;
++	int cmd = ADSCTRL_PD0 | ADSCTRL_PD1 | ADSCTRL_DFR |
++		(channel << ADSCTRL_ADR_SH) | ADSCTRL_STS;
++
++	corgi_ssp_ads7846_lock();
++
++	corgi_ssp_ads7846_put(cmd);
++	corgi_ssp_ads7846_get();
++
++	corgi_ssp_ads7846_put(cmd);
++	voltage = corgi_ssp_ads7846_get();
++
++	/* Power-Down Enable */
++	corgi_ssp_ads7846_put((1u << ADSCTRL_ADR_SH) | ADSCTRL_STS);
++	corgi_ssp_ads7846_get();
++
++	corgi_ssp_ads7846_unlock();
++
++	return voltage;
++}
++
++unsigned long poodlepm_read_devdata(int type)
++{
++	switch(type) {
++	case SHARPSL_STATUS_ACIN:
++		return ((GPLR(POODLE_GPIO_AC_IN) & GPIO_bit(POODLE_GPIO_AC_IN)) != 0);
++	case SHARPSL_STATUS_LOCK:
++		return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batlock);
++	case SHARPSL_STATUS_CHRGFULL:
++		return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batfull);
++	case SHARPSL_STATUS_FATAL:
++		return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_fatal);
++//	case SHARPSL_ACIN_VOLT:
++//		return poodle_pm_read_ads7846(MAX1111_ACIN_VOLT);
++// FIXME
++	case SHARPSL_BATT_TEMP:
++		return poodle_pm_read_ads7846(MUX_CHL);
++	case SHARPSL_BATT_VOLT:
++	default:
++		return poodle_pm_read_ads7846(BATT_CHL);
++	}
++}
++
++static void poodle_limit_intensity(int limit)
++{
++}
++
++static struct sharpsl_charger_machinfo poodle_pm_machinfo = {
++	.init            = poodle_charger_init,
++	.exit            = sharpsl_pm_pxa_remove,
++	.gpio_batlock    = POODLE_GPIO_BAT_COVER,
++	.gpio_acin       = POODLE_GPIO_AC_IN,
++	.gpio_batfull    = POODLE_GPIO_CHRG_FULL,
++	.batfull_irq	  = 1,
++	.discharge       = poodle_discharge,
++	.charge          = poodle_charge,
++	.measure_temp    = poodle_measure_temp,
++	.presuspend      = poodle_presuspend,
++	.postsuspend     = poodle_postsuspend,
++	.read_devdata    = poodlepm_read_devdata,
++	.charger_wakeup  = poodle_charger_wakeup,
++	.should_wakeup   = poodle_should_wakeup,
++	.backlight_limit =  poodle_limit_intensity,
++	.charge_on_volt	  = SHARPSL_CHARGE_ON_VOLT,
++	.charge_on_temp	  = SHARPSL_CHARGE_ON_TEMP,
++	.fatal_acin_volt  = SHARPSL_FATAL_ACIN_VOLT,
++	.fatal_noacin_volt= SHARPSL_FATAL_NOACIN_VOLT,
++	.bat_levels       = 6,
++	.bat_levels_noac  = poodle_battery_levels_fl,
++	.bat_levels_acin  = poodle_battery_levels_nofl,
++	.status_high_acin = 1490,
++	.status_low_acin  = 1466,
++	.status_high_noac = 1482,
++	.status_low_noac  = 1458,
++};
++
++static struct platform_device *poodlepm_device;
++
++static int __devinit poodlepm_init(void)
++{
++	int ret;
++
++	poodlepm_device = platform_device_alloc("sharpsl-pm", -1);
++	if (!poodlepm_device)
++		return -ENOMEM;
++
++	poodlepm_device->dev.platform_data = &poodle_pm_machinfo;
++	ret = platform_device_add(poodlepm_device);
++
++	if (ret)
++		platform_device_put(poodlepm_device);
++
++	return ret;
++}
++
++static void poodlepm_exit(void)
++{
++	platform_device_unregister(poodlepm_device);
++}
++
++module_init(poodlepm_init);
++module_exit(poodlepm_exit);
+Index: linux-2.6.26/arch/arm/common/locomo.c
+===================================================================
+--- linux-2.6.26.orig/arch/arm/common/locomo.c	2008-07-13 14:51:29.000000000 -0700
++++ linux-2.6.26/arch/arm/common/locomo.c	2008-08-05 22:16:20.000000000 -0700
+@@ -600,6 +600,7 @@
+ 	spin_lock_irqsave(&lchip->lock, flags);
+ 
+ 	save->LCM_GPO     = locomo_readl(lchip->base + LOCOMO_GPO);	/* GPIO */
++	// FIXME - should save JK_B
+ 	locomo_writel(0x00, lchip->base + LOCOMO_GPO);
+ 	save->LCM_SPICT   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT);	/* SPI */
+ 	locomo_writel(0x40, lchip->base + LOCOMO_SPICT);
+@@ -1101,11 +1102,16 @@
+ 
+ static struct locomo *locomo_chip_driver(struct locomo_dev *ldev);
+ 
++struct locomo_dev *frontlight_dev;
++EXPORT_SYMBOL(frontlight_dev);
++
+ void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
+ {
+ 	unsigned long flags;
+ 	struct locomo *lchip = locomo_chip_driver(dev);
+ 
++	frontlight_dev = dev;
++
+ 	if (vr)
+ 		locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
+ 	else
+Index: linux-2.6.26/include/asm-arm/hardware/locomo.h
+===================================================================
+--- linux-2.6.26.orig/include/asm-arm/hardware/locomo.h	2008-07-13 14:51:29.000000000 -0700
++++ linux-2.6.26/include/asm-arm/hardware/locomo.h	2008-08-05 22:15:11.000000000 -0700
+@@ -100,6 +100,12 @@
+ #define LOCOMO_GPIO_CARD_DETECT LOCOMO_GPIO(13)
+ #define LOCOMO_GPIO_WRITE_PROT  LOCOMO_GPIO(14)
+ #define LOCOMO_GPIO_CARD_POWER  LOCOMO_GPIO(15)
++#define POODLE_LOCOMO_GPIO_AMP_ON      LOCOMO_GPIO(8)
++#define POODLE_LOCOMO_GPIO_MUTE_L      LOCOMO_GPIO(10)
++#define POODLE_LOCOMO_GPIO_MUTE_R      LOCOMO_GPIO(11)
++#define POODLE_LOCOMO_GPIO_232VCC_ON   LOCOMO_GPIO(12)
++#define POODLE_LOCOMO_GPIO_JK_B        LOCOMO_GPIO(13)
++ 
+ 
+ /* Start the definitions of the devices.  Each device has an initial
+  * base address and a series of offsets from that base address. */
diff --git a/recipes/linux/linux-rp-2.6.26/poodle_serial_vcc-r1.patch b/recipes/linux/linux-rp-2.6.26/poodle_serial_vcc-r1.patch
new file mode 100644
index 0000000..8815732
--- /dev/null
+++ b/recipes/linux/linux-rp-2.6.26/poodle_serial_vcc-r1.patch
@@ -0,0 +1,30 @@
+
+Index: linux-2.6.26/arch/arm/common/locomo.c
+===================================================================
+--- linux-2.6.26.orig/arch/arm/common/locomo.c	2008-08-02 20:53:56.000000000 -0700
++++ linux-2.6.26/arch/arm/common/locomo.c	2008-08-04 16:50:29.000000000 -0700
+@@ -715,7 +715,7 @@
+ 	locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
+ 
+ 	/* GPIO */
+-	locomo_writel(0, lchip->base + LOCOMO_GPO);
++	locomo_writel(POODLE_LOCOMO_GPIO_232VCC_ON, lchip->base + LOCOMO_GPO);
+ 	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
+ 			, lchip->base + LOCOMO_GPE);
+ 	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
+Index: linux-2.6.26/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.26.orig/drivers/serial/pxa.c	2008-08-04 16:46:37.000000000 -0700
++++ linux-2.6.26/drivers/serial/pxa.c	2008-08-04 16:48:18.000000000 -0700
+@@ -296,9 +296,9 @@
+ 	unsigned char mcr = 0;
+ 
+ 	if (mctrl & TIOCM_RTS)
+-		mcr |= UART_MCR_RTS;
++		mcr &= ~UART_MCR_RTS;
+ 	if (mctrl & TIOCM_DTR)
+-		mcr |= UART_MCR_DTR;
++		mcr &= ~UART_MCR_DTR;
+ 	if (mctrl & TIOCM_OUT1)
+ 		mcr |= UART_MCR_OUT1;
+ 	if (mctrl & TIOCM_OUT2)
diff --git a/recipes/linux/linux-rp-2.6.26/poodle_ts.patch b/recipes/linux/linux-rp-2.6.26/poodle_ts.patch
new file mode 100644
index 0000000..b10ee2e
--- /dev/null
+++ b/recipes/linux/linux-rp-2.6.26/poodle_ts.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/poodle.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/poodle.c	2008-01-25 12:10:10.000000000 -0800
++++ linux-2.6.23/arch/arm/mach-pxa/poodle.c	2008-01-25 12:11:58.000000000 -0800
+@@ -166,7 +166,7 @@
+ 	},
+ };
+ 
+-static unsigned long poodle_get_hsync_len(void)
++static unsigned long poodle_get_hsync_invperiod(void)
+ {
+ 	return 0;
+ }
+@@ -176,7 +176,7 @@
+ }
+ 
+ static struct corgits_machinfo  poodle_ts_machinfo = {
+-	.get_hsync_len   = poodle_get_hsync_len,
++	.get_hsync_invperiod   = poodle_get_hsync_invperiod,
+ 	.put_hsync       = poodle_null_hsync,
+ 	.wait_hsync      = poodle_null_hsync,
+ };
diff --git a/recipes/linux/linux-rp-2.6.26/pxafb.patch b/recipes/linux/linux-rp-2.6.26/pxafb.patch
new file mode 100644
index 0000000..7fe693c
--- /dev/null
+++ b/recipes/linux/linux-rp-2.6.26/pxafb.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.23/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.23.orig/drivers/video/pxafb.c	2008-01-25 16:25:21.000000000 -0800
++++ linux-2.6.23/drivers/video/pxafb.c	2008-01-25 16:32:14.000000000 -0800
+@@ -1194,7 +1194,7 @@
+ 		if ((clkinfo->old == 13000))
+ 			break;
+ 
+-		pcd = get_pcd(fbi->fb.var.pixclock);
++		pcd = get_pcd(fbi,fbi->fb.var.pixclock);
+ 		lccr3 = fbi->reg_lccr3;
+ 		set_hsync_time(fbi, pcd);
+ 		fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
diff --git a/recipes/linux/linux-rp_2.6.26.bb b/recipes/linux/linux-rp_2.6.26.bb
index 0b341c5..9eda74c 100644
--- a/recipes/linux/linux-rp_2.6.26.bb
+++ b/recipes/linux/linux-rp_2.6.26.bb
@@ -1,6 +1,6 @@
 require linux-rp.inc
 
-PR = "r13"
+PR = "r13.1"
 
 DEFAULT_PREFERENCE = "-1"
 DEFAULT_PREFERENCE_qemuarm = "-1"
@@ -35,7 +35,8 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
 #           ${RPSRC}/pxa27x_overlay-r8.patch;patch=1 \
            ${RPSRC}/w100_extaccel-r2.patch;patch=1 \
            ${RPSRC}/w100_extmem-r1.patch;patch=1 \
-           ${RPSRC}/poodle_pm-r6.patch;patch=1 \
+#           ${RPSRC}/poodle_pm-r6.patch;patch=1 \
+           file://poodle_pm-r7.patch;patch=1 \
            ${RPSRC}/poodle_lcd_hack-r0.patch;patch=1 \
            ${RPSRC}/poodle_asoc_fix-r1.patch;patch=1 \
            file://zaurus-i2c-init.patch;patch=1;status=upstream \
@@ -63,10 +64,10 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
            file://defconfig-bootcdx86 \
            file://defconfig-htcuniversal \
            file://defconfig-collie \
+           file://defconfig-poodle \
            file://defconfig-zylonite"
 # Disabled until the patchset is updated:
 #           file://defconfig-tosa
-#           file://defconfig-poodle
 
 
 # FIXMEs before made default	   
@@ -88,9 +89,9 @@ SRC_URI_append_collie = "\
 "
 
 SRC_URI_append_poodle = "\
-           ${RPSRC}/poodle_serial_vcc-r0.patch;patch=1 \
-           file://poodle_ts.patch;patch=1 \
-           file://pxafb.patch;patch=1 \
+           file://poodle_serial_vcc-r1.patch;patch=1 \
+#           file://poodle_ts.patch;patch=1 \
+#           file://pxafb.patch;patch=1 \
 "
 
 SRC_URI_append_tosa = "\
-- 
1.6.3.3

_______________________________________________
Zaurus-devel mailing list
Zaurus-devel@lists.linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/zaurus-devel

Reply via email to