linux-rp-2.6.23: Make qemuarm and qemux86 use 2.6.23, sync .bb file with OE for poodle and tosa changes.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@3394 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie
2008-01-01 10:39:58 +00:00
parent f217220fd5
commit a1ffa5a168
4 changed files with 74 additions and 223 deletions

View File

@@ -0,0 +1,17 @@
Index: linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c
===================================================================
--- linux-2.6.21.orig/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:45:39.000000000 +0100
+++ linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:47:30.000000000 +0100
@@ -2666,6 +2666,12 @@
iface = netdev_priv(dev);
local = iface->local;
+ if(dev->base_addr == 0)
+ {
+ printk(KERN_DEBUG "%s: IRQ before base_addr set\n", dev->name);
+ return IRQ_HANDLED;
+ }
+
prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);
if (local->func->card_present && !local->func->card_present(local)) {

View File

@@ -0,0 +1,31 @@
From: Marcin Juszkiewicz <openembedded@haerwu.biz>
Linksys WCF11 submitted by Ångström user.
"The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P", "RevA",
0xa5f472c2, 0x9c05598d, 0xc9049a39, 0x57a66194
manfid: 0x0274, 0x3301
Signed-off-by: Marcin Juszkiewicz <openembedded@haerwu.biz>
Acked-by: Pavel Roskin <proski@gnu.org>
---
drivers/net/wireless/hostap/hostap_cs.c | 3 +++
1 file changed, 3 insertions(+)
--- linux-2.6.23.orig/drivers/net/wireless/hostap/hostap_cs.c
+++ linux-2.6.23/drivers/net/wireless/hostap/hostap_cs.c
@@ -887,10 +887,13 @@ static struct pcmcia_device_id hostap_cs
"Ver. 1.00",
0x5cd01705, 0x4271660f, 0x9d08ee12),
PCMCIA_DEVICE_PROD_ID123(
"corega", "WL PCCL-11", "ISL37300P",
0xa21501a, 0x59868926, 0xc9049a39),
+ PCMCIA_DEVICE_PROD_ID1234(
+ "The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P",
+ 0xa5f472c2, 0x9c05598d, 0xc9049a39),
PCMCIA_DEVICE_NULL
};
MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids);

View File

@@ -1,208 +0,0 @@
Index: linux-tosa/drivers/input/touchscreen/wm9712.c
===================================================================
--- linux-tosa.orig/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:36.008543280 +0100
+++ linux-tosa/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:50.923275896 +0100
@@ -1,7 +1,7 @@
/*
* wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs.
*
- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
* Author: Liam Girdwood
* liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
* Parts Copyright : Ian Molton <spyro@f2s.com>
@@ -13,6 +13,12 @@
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
+ * Revision history
+ * 4th Jul 2005 Initial version.
+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
+ * touchscreen interference.
+ *
*/
#include <linux/module.h>
@@ -28,6 +34,10 @@
#define WM9705_VERSION "0.60"
#define DEFAULT_PRESSURE 0xb0c0
+#define CCNT(a) asm volatile ("mrc p14, 0, %0, C1, C1, 0" : "=r"(a))
+#define CCNT_ON() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
+#define CCNT_OFF() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
+
/*
* Debug
*/
@@ -243,6 +253,36 @@
return wm->dig[2] & WM9712_PDEN;
}
+
+#ifdef CONFIG_MACH_TOSA
+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
+ * before sampling the Y axis of the touchscreen */
+static inline void wm9712_lcd_sync_on(struct wm97xx* wm, int adcsel) {
+ unsigned long timer1 = 0, timer2 = 0, wait_time = 0;
+ if (adcsel == WM97XX_ADCSEL_Y) {
+ wait_time = wm97xx_calc_lcd_waittime(wm);
+
+ CCNT_ON();
+
+ if (wait_time) {
+ /* wait for LCD rising edge */
+ wm_machinfo->wait_hsync();
+ /* get clock */
+ CCNT(timer1);
+ CCNT(timer2);
+
+ while ((timer2 - timer1) < wait_time) {
+ CCNT(timer2);
+ }
+ }
+ }
+}
+
+static inline void wm9712_lcd_sync_off(void) {
+ CCNT_OFF();
+}
+#endif
+
/*
* Read a sample from the WM9712 adc in polling mode.
*/
@@ -260,6 +300,9 @@
/* set up digitiser */
if (adcsel & 0x8000)
adcsel = ((adcsel & 0x7fff) + 3) << 12;
+ #ifdef CONFIG_MACH_TOSA
+ wm9712_lcd_sync_on(wm, adcsel);
+ #endif
wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay));
/* wait 3 AC97 time slots + delay for conversion */
@@ -282,6 +325,10 @@
*sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
+ #ifdef CONFIG_MACH_TOSA
+ wm9712_lcd_sync_off();
+ #endif
+
/* check we have correct sample */
if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) {
dbg ("adc wrong sample, read %x got %x", adcsel,
@@ -303,11 +350,12 @@
static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data)
{
int rc;
-
if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID)
return rc;
+
if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID)
return rc;
+
if (pil && !five_wire) {
if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID)
return rc;
Index: linux-tosa/drivers/input/touchscreen/wm97xx-core.c
===================================================================
--- linux-tosa.orig/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:36.008543280 +0100
+++ linux-tosa/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:50.924275744 +0100
@@ -2,7 +2,7 @@
* wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712
* and WM9713 AC97 Codecs.
*
- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
* Author: Liam Girdwood
* liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
* Parts Copyright : Ian Molton <spyro@f2s.com>
@@ -67,6 +67,9 @@
* GPIOs) and 2.6 power management.
* 29th Nov 2004 Added WM9713 support.
* 4th Jul 2005 Moved codec specific code out to seperate files.
+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
+ * touchscreen interference.
*/
#include <linux/module.h>
@@ -94,6 +97,7 @@
static DECLARE_MUTEX(gpio_sem);
static LIST_HEAD(wm97xx_misc_list);
static struct wm97xx* wm_codec = NULL;
+struct wm97xx_machinfo *wm_machinfo;
/*
* WM97xx - enable/disable AUX ADC sysfs
@@ -832,6 +836,23 @@
mdev->remove(wm_codec);
}
+#ifdef CONFIG_MACH_TOSA
+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
+ * before sampling the Y axis of the touchscreen */
+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm) {
+ unsigned long hsync_time = wm_machinfo->get_hsync_time();
+ return hsync_time;
+}
+
+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo) {
+ wm_machinfo = machinfo;
+}
+
+void wm97xx_unset_machinfo() {
+ wm_machinfo = NULL;
+}
+#endif
+
static struct device_driver wm97xx_driver = {
.name = "ac97",
.bus = &ac97_bus_type,
@@ -861,6 +882,9 @@
EXPORT_SYMBOL_GPL(wm97xx_reg_write);
EXPORT_SYMBOL_GPL(wm97xx_register_misc_dev);
EXPORT_SYMBOL_GPL(wm97xx_unregister_misc_dev);
+EXPORT_SYMBOL_GPL(wm97xx_calc_lcd_waittime);
+EXPORT_SYMBOL_GPL(wm97xx_set_machinfo);
+EXPORT_SYMBOL_GPL(wm97xx_unset_machinfo);
module_init(wm97xx_init);
module_exit(wm97xx_exit);
Index: linux-tosa/include/linux/wm97xx.h
===================================================================
--- linux-tosa.orig/include/linux/wm97xx.h 2006-08-29 16:52:36.008543280 +0100
+++ linux-tosa/include/linux/wm97xx.h 2006-08-29 16:52:50.924275744 +0100
@@ -207,6 +207,7 @@
struct wm97xx;
extern struct wm97xx_codec_drv wm97xx_codec;
+extern struct wm97xx_machinfo *wm_machinfo;
/*
* Codec driver interface - allows mapping to WM9705/12/13 and newer codecs
@@ -253,6 +254,11 @@
struct list_head list;
};
+struct wm97xx_machinfo {
+ unsigned long (*get_hsync_time)(void);
+ void (*wait_hsync)(void);
+};
+
int wm97xx_register_misc_dev(struct wm97xx_misc_dev* mdev);
void wm97xx_unregister_misc_dev(struct wm97xx_misc_dev* mdev);
@@ -281,4 +287,9 @@
int wm97xx_acc_startup(struct wm97xx* wm);
void wm97xx_acc_shutdown(struct wm97xx* wm);
+
+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm);
+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo);
+void wm97xx_unset_machinfo(void);
+
#endif