Add linux-rp 2.6.23-git9 kernel for testing purposes (not default)

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2909 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie 2007-10-19 10:23:36 +00:00
parent f3b960b426
commit 329e9fb372
28 changed files with 76884 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
---
arch/arm/kernel/vmlinux.lds.S | 1 +
1 file changed, 1 insertion(+)
Index: linux-2.6.22/arch/arm/kernel/vmlinux.lds.S
===================================================================
--- linux-2.6.22.orig/arch/arm/kernel/vmlinux.lds.S 2007-09-11 18:32:29.000000000 +0200
+++ linux-2.6.22/arch/arm/kernel/vmlinux.lds.S 2007-09-11 18:33:42.000000000 +0200
@@ -94,6 +94,7 @@
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
+ *(.note.*)
#ifdef CONFIG_MMU
*(.fixup)
#endif

View File

@ -0,0 +1,12 @@
Index: linux-2.6.13/drivers/ide/legacy/ide-cs.c
===================================================================
--- linux-2.6.13.orig/drivers/ide/legacy/ide-cs.c 2005-09-01 22:43:46.000000000 +0100
+++ linux-2.6.13/drivers/ide/legacy/ide-cs.c 2005-09-01 22:45:46.000000000 +0100
@@ -488,7 +488,6 @@
PCMCIA_DEVICE_PROD_ID123("KODAK Picture Card ", "KODAK ", "V100K", 0x94a0d8f3, 0xe4fc3ea0, 0xe5e7eed4),
PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
- PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
PCMCIA_DEVICE_NULL,
};
MODULE_DEVICE_TABLE(pcmcia, ide_ids);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,209 @@
This is a patch that I've been maintaining for a few years, and I'd
really like to see it added to the mainstream zaurus kernel so I can
finally stop distributing my own.
This patch only effects the card while in monitor mode, and does not
cause any known stability issues.
http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch
Rick Farina (Zero_Chaos)
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:30:18.000000000 -0400
@@ -69,6 +69,9 @@
iface = netdev_priv(dev);
local = iface->local;
+ if (local->iw_mode == IW_MODE_MONITOR)
+ goto xmit;
+
if (skb->len < ETH_HLEN) {
printk(KERN_DEBUG "%s: hostap_data_start_xmit: short skb "
"(len=%d)\n", dev->name, skb->len);
@@ -234,6 +237,7 @@
memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN);
}
+xmit:
iface->stats.tx_packets++;
iface->stats.tx_bytes += skb->len;
@@ -404,8 +408,6 @@
}
if (skb->len < 24) {
- printk(KERN_DEBUG "%s: hostap_master_start_xmit: short skb "
- "(len=%d)\n", dev->name, skb->len);
ret = 0;
iface->stats.tx_dropped++;
goto fail;
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.orig
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.rej
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:30:18.000000000 -0400
@@ -1005,6 +1005,35 @@
return fid;
}
+static int prism2_monitor_enable(struct net_device *dev)
+{
+ if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE, 5)) {
+ printk(KERN_DEBUG "Port type setting for monitor mode "
+ "failed\n");
+ return -EOPNOTSUPP;
+ }
+
+ if (hfa384x_cmd(dev, HFA384X_CMDCODE_TEST | (0x0a << 8),
+ 0, NULL, NULL)) {
+ printk(KERN_DEBUG "Could not enter testmode 0x0a\n");
+ return -EOPNOTSUPP;
+ }
+
+ if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
+ HFA384X_WEPFLAGS_PRIVACYINVOKED |
+ HFA384X_WEPFLAGS_HOSTENCRYPT |
+ HFA384X_WEPFLAGS_HOSTDECRYPT)) {
+ printk(KERN_DEBUG "WEP flags setting failed\n");
+ return -EOPNOTSUPP;
+ }
+
+ if (hostap_set_word(dev, HFA384X_RID_PROMISCUOUSMODE, 1)) {
+ printk(KERN_DEBUG "Could not set promiscuous mode\n");
+ return -EOPNOTSUPP;
+ }
+
+ return 0;
+}
static int prism2_reset_port(struct net_device *dev)
{
@@ -1031,6 +1060,10 @@
"port\n", dev->name);
}
+ if (local->iw_mode == IW_MODE_MONITOR)
+ /* force mode 0x0a after port 0 reset */
+ return prism2_monitor_enable(dev);
+
/* It looks like at least some STA firmware versions reset
* fragmentation threshold back to 2346 after enable command. Restore
* the configured value, if it differs from this default. */
@@ -1466,6 +1499,10 @@
return 1;
}
+ if (local->iw_mode == IW_MODE_MONITOR)
+ /* force mode 0x0a after port 0 reset */
+ prism2_monitor_enable(dev);
+
local->hw_ready = 1;
local->hw_reset_tries = 0;
local->hw_resetting = 0;
@@ -3156,6 +3193,7 @@
local->func->hw_config = prism2_hw_config;
local->func->hw_reset = prism2_hw_reset;
local->func->hw_shutdown = prism2_hw_shutdown;
+ local->func->monitor_enable = prism2_monitor_enable;
local->func->reset_port = prism2_reset_port;
local->func->schedule_reset = prism2_schedule_reset;
#ifdef PRISM2_DOWNLOAD_SUPPORT
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_hw.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:30:18.000000000 -0400
@@ -1104,33 +1104,7 @@
printk(KERN_DEBUG "Enabling monitor mode\n");
hostap_monitor_set_type(local);
-
- if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE,
- HFA384X_PORTTYPE_PSEUDO_IBSS)) {
- printk(KERN_DEBUG "Port type setting for monitor mode "
- "failed\n");
- return -EOPNOTSUPP;
- }
-
- /* Host decrypt is needed to get the IV and ICV fields;
- * however, monitor mode seems to remove WEP flag from frame
- * control field */
- if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
- HFA384X_WEPFLAGS_HOSTENCRYPT |
- HFA384X_WEPFLAGS_HOSTDECRYPT)) {
- printk(KERN_DEBUG "WEP flags setting failed\n");
- return -EOPNOTSUPP;
- }
-
- if (local->func->reset_port(dev) ||
- local->func->cmd(dev, HFA384X_CMDCODE_TEST |
- (HFA384X_TEST_MONITOR << 8),
- 0, NULL, NULL)) {
- printk(KERN_DEBUG "Setting monitor mode failed\n");
- return -EOPNOTSUPP;
- }
-
- return 0;
+ return local->func->reset_port(dev);
}
@@ -1199,7 +1173,7 @@
local->iw_mode = *mode;
if (local->iw_mode == IW_MODE_MONITOR)
- hostap_monitor_mode_enable(local);
+ return hostap_monitor_mode_enable(local);
else if (local->iw_mode == IW_MODE_MASTER && !local->host_encrypt &&
!local->fw_encrypt_ok) {
printk(KERN_DEBUG "%s: defaulting to host-based encryption as "
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:30:18.000000000 -0400
@@ -331,7 +331,7 @@
if (local->iw_mode == IW_MODE_REPEAT)
return HFA384X_PORTTYPE_WDS;
if (local->iw_mode == IW_MODE_MONITOR)
- return HFA384X_PORTTYPE_PSEUDO_IBSS;
+ return 5; /*HFA384X_PORTTYPE_PSEUDO_IBSS;*/
return HFA384X_PORTTYPE_HOSTAP;
}
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_main.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:30:18.000000000 -0400
@@ -48,6 +48,8 @@
{ 0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID },
/* Samsung MagicLAN SWL-2210P */
{ 0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID },
+ /* NETGEAR MA311 */
+ { 0x1385, 0x3872, PCI_ANY_ID, PCI_ANY_ID },
{ 0 }
};
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_pci.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:30:18.000000000 -0400
@@ -101,6 +101,7 @@
{ 0xc250, 0x0002 } /* EMTAC A2424i */,
{ 0xd601, 0x0002 } /* Z-Com XI300 */,
{ 0xd601, 0x0005 } /* Zcomax XI-325H 200mW */,
+ { 0xd601, 0x0010 } /* Zcomax XI-325H 100mW */,
{ 0, 0}
};
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_plx.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:30:18.000000000 -0400
@@ -575,6 +575,7 @@
int (*hw_config)(struct net_device *dev, int initial);
void (*hw_reset)(struct net_device *dev);
void (*hw_shutdown)(struct net_device *dev, int no_disable);
+ int (*monitor_enable)(struct net_device *dev);
int (*reset_port)(struct net_device *dev);
void (*schedule_reset)(local_info_t *local);
int (*download)(local_info_t *local,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,90 @@
---
drivers/serial/8250.c | 5 +++++
drivers/serial/serial_core.c | 1 +
drivers/serial/serial_cs.c | 12 +++++++++---
include/linux/serial_core.h | 1 +
4 files changed, 16 insertions(+), 3 deletions(-)
Index: linux-2.6.20/drivers/serial/8250.c
===================================================================
--- linux-2.6.20.orig/drivers/serial/8250.c 2007-04-27 13:37:26.000000000 +0100
+++ linux-2.6.20/drivers/serial/8250.c 2007-04-27 13:38:16.000000000 +0100
@@ -2429,7 +2429,12 @@
.driver_name = "serial",
.dev_name = "ttyS",
.major = TTY_MAJOR,
+#ifdef CONFIG_SERIAL_PXA
+ .minor = 64 + 4,
+ .name_base = 4,
+#else
.minor = 64,
+#endif
.nr = UART_NR,
.cons = SERIAL8250_CONSOLE,
};
Index: linux-2.6.20/drivers/serial/serial_core.c
===================================================================
--- linux-2.6.20.orig/drivers/serial/serial_core.c 2007-02-04 18:44:54.000000000 +0000
+++ linux-2.6.20/drivers/serial/serial_core.c 2007-04-27 13:39:39.000000000 +0100
@@ -2068,7 +2068,8 @@
printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
port->dev ? port->dev->bus_id : "",
port->dev ? ": " : "",
- drv->dev_name, port->line, address, port->irq, uart_type(port));
+ drv->dev_name, port->line + drv->name_base, address, port->irq,
+ uart_type(port));
}
static void
@@ -2183,6 +2184,7 @@
normal->owner = drv->owner;
normal->driver_name = drv->driver_name;
normal->name = drv->dev_name;
+ normal->name_base = drv->name_base;
normal->major = drv->major;
normal->minor_start = drv->minor;
normal->type = TTY_DRIVER_TYPE_SERIAL;
Index: linux-2.6.20/include/linux/serial_core.h
===================================================================
--- linux-2.6.20.orig/include/linux/serial_core.h 2007-02-04 18:44:54.000000000 +0000
+++ linux-2.6.20/include/linux/serial_core.h 2007-04-27 13:37:27.000000000 +0100
@@ -341,6 +341,7 @@
struct module *owner;
const char *driver_name;
const char *dev_name;
+ int name_base;
int major;
int minor;
int nr;
Index: linux-2.6.20/drivers/serial/serial_cs.c
===================================================================
--- linux-2.6.20.orig/drivers/serial/serial_cs.c 2007-02-04 18:44:54.000000000 +0000
+++ linux-2.6.20/drivers/serial/serial_cs.c 2007-04-27 13:40:34.000000000 +0100
@@ -390,7 +390,7 @@
kio_addr_t iobase, int irq)
{
struct uart_port port;
- int line;
+ int line, linestart;
memset(&port, 0, sizeof (struct uart_port));
port.iobase = iobase;
@@ -411,10 +411,16 @@
return -EINVAL;
}
+#if CONFIG_SERIAL_PXA
+ linestart = 4;
+#else
+ linestart = 0;
+#endif
+
info->line[info->ndev] = line;
- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
info->node[info->ndev].major = TTY_MAJOR;
- info->node[info->ndev].minor = 0x40 + line;
+ info->node[info->ndev].minor = 0x40 + line + linestart;
if (info->ndev > 0)
info->node[info->ndev - 1].next = &info->node[info->ndev];
info->ndev++;

View File

@ -0,0 +1,26 @@
---
drivers/video/pxafb.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-2.6.22/drivers/video/pxafb.h
===================================================================
--- linux-2.6.22.orig/drivers/video/pxafb.h 2007-09-25 15:44:42.000000000 +0200
+++ linux-2.6.22/drivers/video/pxafb.h 2007-09-25 15:45:07.000000000 +0200
@@ -36,7 +36,7 @@
struct fb_bitfield transp;
};
-#ifdef CONFIG_PXA27x
+#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
/* PXA Overlay Framebuffer Support */
struct overlayfb_info
{
@@ -142,7 +142,7 @@
wait_queue_head_t ctrlr_wait;
struct work_struct task;
-#ifdef CONFIG_PXA27x
+#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
/* PXA Overlay Framebuffer Support */
struct overlayfb_info *overlay1fb;
struct overlayfb_info *overlay2fb;

View File

@ -0,0 +1,155 @@
From: Petr Vandrovec <vandrove@vc.cvut.cz>
Patch below adds support for using different prescaler than 16 for 16c950
chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash
card, which comes (apparently) with 806kHz clocks, and so you have to
program prescaler for division by 7, and DLAB to 1, to get 115200Bd.
To get card properly running you also have to add lines below to
/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but
50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code
specifying baud_rate in serial_cs, I assume that specifying it in
serial.opts is right way to do this type of things.
Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible
baud rate passed to uart code was uartclk / 16 while correct value for
these devices (and for 16c950) is uartclk / 4.
Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with
baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such
devices exist, but we should not ignore spd_cust, user probably knows why
he asked for spd_cust.
serial.opts:
case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in
'0279,950b-2-GPRS Modem---')
SERIAL_OPTS="baud_base 50400"
;;
esac
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 64 insertions(+), 18 deletions(-)
Index: linux-2.6.21/drivers/serial/8250.c
===================================================================
--- linux-2.6.21.orig/drivers/serial/8250.c 2007-07-01 16:59:52.000000000 +0100
+++ linux-2.6.21/drivers/serial/8250.c 2007-07-01 17:01:21.000000000 +0100
@@ -1964,24 +1964,58 @@ static void serial8250_shutdown(struct u
serial_unlink_irq_chain(up);
}
-static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
+static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud,
+ unsigned int *prescaler)
{
- unsigned int quot;
-
- /*
- * Handle magic divisors for baud rates above baud_base on
- * SMSC SuperIO chips.
+ /*
+ * Use special handling only if user did not supply its own divider.
+ * spd_cust is defined in terms of baud_base, so always use default
+ * prescaler when spd_cust is requested.
*/
- if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
- baud == (port->uartclk/4))
- quot = 0x8001;
- else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
- baud == (port->uartclk/8))
- quot = 0x8002;
- else
- quot = uart_get_divisor(port, baud);
- return quot;
+ *prescaler = 16;
+ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) {
+ unsigned int quot = port->uartclk / baud;
+
+ /*
+ * Handle magic divisors for baud rates above baud_base on
+ * SMSC SuperIO chips.
+ */
+ if (port->flags & UPF_MAGIC_MULTIPLIER) {
+ if (quot == 4) {
+ return 0x8001;
+ } else if (quot == 8) {
+ return 0x8002;
+ }
+ }
+ if (port->type == PORT_16C950) {
+ /*
+ * This computes TCR value (4 to 16), not CPR value (which can
+ * be between 1.000 and 31.875) - chip I have uses XTAL of
+ * 806400Hz, and so a division by 7 is required to get 115200Bd.
+ * I'm leaving CPR disabled for now, until someone will
+ * hit even more exotic XTAL (it is needed to get 500kbps
+ * or 1000kbps from 18.432MHz XTAL, but I have no device
+ * which would benefit from doing that).
+ *
+ * If we can use divide by 16, use it. Otherwise look for
+ * better prescaler, from 15 to 4. If quotient cannot
+ * be divided by any integer value between 4 and 15, use 4.
+ */
+ if (quot & 0x0F) {
+ unsigned int div;
+
+ for (div = 15; div > 4; div--) {
+ if (quot % div == 0) {
+ break;
+ }
+ }
+ *prescaler = div;
+ return quot / div;
+ }
+ }
+ }
+ return uart_get_divisor(port, baud);
}
static void
@@ -1991,7 +2025,7 @@ serial8250_set_termios(struct uart_port
struct uart_8250_port *up = (struct uart_8250_port *)port;
unsigned char cval, fcr = 0;
unsigned long flags;
- unsigned int baud, quot;
+ unsigned int baud, quot, prescaler;
switch (termios->c_cflag & CSIZE) {
case CS5:
@@ -2023,8 +2057,13 @@ serial8250_set_termios(struct uart_port
/*
* Ask the core to calculate the divisor for us.
*/
- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
- quot = serial8250_get_divisor(port, baud);
+ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) {
+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4);
+ } else {
+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
+ }
+ quot = serial8250_get_divisor(port, baud, &prescaler);
+
/*
* Oxford Semi 952 rev B workaround
@@ -2139,6 +2178,13 @@ serial8250_set_termios(struct uart_port
serial_dl_write(up, quot);
/*
+ * Program prescaler for 16C950 chips.
+ */
+ if (up->port.type == PORT_16C950) {
+ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler);
+ }
+
+ /*
* LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
* is written without DLAB set, this mode will be disabled.
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
---
drivers/char/vt_ioctl.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Index: linux-2.6.22/drivers/char/vt_ioctl.c
===================================================================
--- linux-2.6.22.orig/drivers/char/vt_ioctl.c 2007-07-09 01:32:17.000000000 +0200
+++ linux-2.6.22/drivers/char/vt_ioctl.c 2007-09-27 11:58:42.000000000 +0200
@@ -770,6 +770,7 @@
/*
* Switching-from response
*/
+ acquire_console_sem();
if (vc->vt_newvt >= 0) {
if (arg == 0)
/*
@@ -784,7 +785,6 @@
* complete the switch.
*/
int newvt;
- acquire_console_sem();
newvt = vc->vt_newvt;
vc->vt_newvt = -1;
i = vc_allocate(newvt);
@@ -798,7 +798,6 @@
* other console switches..
*/
complete_change_console(vc_cons[newvt].d);
- release_console_sem();
}
}
@@ -810,9 +809,12 @@
/*
* If it's just an ACK, ignore it
*/
- if (arg != VT_ACKACQ)
+ if (arg != VT_ACKACQ) {
+ release_console_sem();
return -EINVAL;
+ }
}
+ release_console_sem();
return 0;

View File

@ -0,0 +1,208 @@
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

View File

@ -0,0 +1,45 @@
From 04c42f566c68b757fdadf54e0e0f9dfe9f3f9b06 Mon Sep 17 00:00:00 2001
From: eric miao <eric.miao@marvell.com>
Date: Tue, 19 Jun 2007 16:42:53 +0800
Subject: [PATCH] [PATCH] make zylonite boot
1. reuse head-xscale.S for XSC3
2. add a workaround for machine ID assignment, which should be done
by boot loader
---
arch/arm/boot/compressed/Makefile | 4 ++++
arch/arm/boot/compressed/head-xscale.S | 5 +++++
2 files changed, 9 insertions(+)
Index: linux-2.6-pxa3/arch/arm/boot/compressed/Makefile
===================================================================
--- linux-2.6-pxa3.orig/arch/arm/boot/compressed/Makefile 2007-09-24 11:25:57.000000000 +0200
+++ linux-2.6-pxa3/arch/arm/boot/compressed/Makefile 2007-09-24 12:26:53.000000000 +0200
@@ -40,6 +40,10 @@
OBJS += head-xscale.o
endif
+ifeq ($(CONFIG_CPU_XSC3),y)
+OBJS += head-xscale.o
+endif
+
ifeq ($(CONFIG_PXA_SHARPSL),y)
OBJS += head-sharpsl.o
endif
Index: linux-2.6-pxa3/arch/arm/boot/compressed/head-xscale.S
===================================================================
--- linux-2.6-pxa3.orig/arch/arm/boot/compressed/head-xscale.S 2007-09-24 11:42:27.000000000 +0200
+++ linux-2.6-pxa3/arch/arm/boot/compressed/head-xscale.S 2007-09-24 12:26:02.000000000 +0200
@@ -33,6 +33,11 @@
bic r0, r0, #0x1000 @ clear Icache
mcr p15, 0, r0, c1, c0, 0
+#ifdef CONFIG_MACH_ZYLONITE
+ mov r7, #(MACH_TYPE_ZYLONITE & 0xff)
+ orr r7, r7, #(MACH_TYPE_ZYLONITE & 0xff00)
+#endif
+
#ifdef CONFIG_ARCH_COTULLA_IDP
mov r7, #MACH_TYPE_COTULLA_IDP
#endif

View File

@ -0,0 +1,126 @@
require linux-rp.inc
PR = "r0"
DEFAULT_PREFERENCE = "-1"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
# Patches submitted upstream are towards top of this list
# Hacks should clearly named and at the bottom
SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.23-git9.bz2;patch=1 \
${RPSRC}/lzo_crypto-r2.patch;patch=1 \
${RPSRC}/lzo_jffs2_sysfs-r1.patch;patch=1 \
${RPSRC}/hx2750_base-r30.patch;patch=1 \
${RPSRC}/hx2750_bl-r9.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r3.patch;patch=1 \
${RPSRC}/pxa_keys-r8.patch;patch=1 \
${RPSRC}/tsc2101-r16.patch;patch=1 \
${RPSRC}/hx2750_test1-r7.patch;patch=1 \
${RPSRC}/input_power-r9.patch;patch=1 \
${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
${RPSRC}/pm_changes-r1.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r4.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r7.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r5.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r7.patch;patch=1 \
${RPSRC}/w100_extaccel-r1.patch;patch=1 \
${RPSRC}/w100_extmem-r1.patch;patch=1 \
file://hostap-monitor-mode.patch;patch=1 \
file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
${RPSRC}/logo_oh-r1.patch.bz2;patch=1;status=unmergable \
${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
${RPSRC}/mmcsd_large_cards-r1.patch;patch=1;status=hack \
${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
${RPSRC}/corgi_rearrange_lcd-r0.patch;patch=1 \
file://pxa-serial-hack.patch;patch=1;status=hack \
file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
file://squashfs3.0-2.6.15.patch;patch=1;status=external \
file://uvesafb-0.1-rc3-2.6.22.patch;patch=1;status=external \
# file://htcuni.patch;patch=1 \
file://binutils-buildid-arm.patch;patch=1 \
file://defconfig-c7x0 \
file://defconfig-hx2000 \
file://defconfig-collie \
file://defconfig-poodle \
file://defconfig-akita \
file://defconfig-spitz \
file://defconfig-qemuarm \
file://defconfig-qemux86 \
file://defconfig-bootcdx86 \
file://defconfig-htcuniversal \
file://defconfig-zylonite \
file://defconfig-tosa "
# FIXMEs before made default
# ${RPSRC}/mmcsd_no_scr_check-r1.patch;patch=1;status=hack
# Add this to enable pm debug code (useful with a serial lead)
# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
# Disabled until I find the reason this gives issues with cdc_subset
# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
# (Pavel Machek's git tree has updated versions of this?)
# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
# These patches are extracted from Pavel Machek's git tree
# (diff against vanilla kernel)
SRC_URI_append_collie = "\
${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
${DOSRC}/collie/collie-r0.patch;patch=1 \
${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
file://collie-mcp-r1.patch;patch=1 \
${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
"
SRC_URI_append_tosa = "\
${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
${CHSRC}/tmio-core-r4.patch;patch=1 \
file://tmio-tc6393-r8.patch;patch=1 \
file://tmio-nand-r7.patch;patch=1 \
file://tmio-ohci-r6.patch;patch=1 \
${CHSRC}/tmio-fb-r6.patch;patch=1 \
file://tosa-keyboard-r18.patch;patch=1 \
${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
${DOSRC}/tosa-tmio-r6.patch;patch=1 \
${DOSRC}/tosa-power-r17.patch;patch=1 \
file://tosa-tmio-lcd-r10.patch;patch=1 \
${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
file://wm9712-suspend-cold-res-r2.patch;patch=1 \
file://sharpsl-pm-postresume-r1.patch;patch=1 \
${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
file://wm9712-reset-loop-r2.patch;patch=1 \
file://tosa-lcdnoise-r1.patch;patch=1 \
file://wm97xx-lcdnoise-r0.patch;patch=1 "
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
SRC_URI_append_htcuniversal ="\
file://htcuni-acx.patch;patch=1;status=external \
"
SRC_URI_append_zylonite ="\
file://arm_pxa_20070923.patch;patch=1 \
file://pxa_fb_overlay.patch;patch=1 \
file://zylonite-boot.patch;patch=1 \
"
S = "${WORKDIR}/linux-2.6.23"