linux-rp: Drop old kernel versions

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@3428 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie
2008-01-08 15:40:50 +00:00
parent 13d394bc55
commit 4619dcbb77
85 changed files with 0 additions and 171827 deletions

View File

@@ -1,45 +0,0 @@
Platform: Sharp Zaurus C760 running 2.6.16 and pcmciautils 013.
root@c7x0:~# pccardctl ident
Socket 0:
product info: "Pretec", "CompactWLAN Card 802.11b", "2.5"
manfid: 0x0156, 0x0002
function: 6 (network)
==========================================================================
From: Jochen Friedrich
Yet another card known to work OK with hostap_cs:
# pccardctl ident
Socket 0:
no product info available
Socket 1:
product info: "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02", ""
manfid: 0x0156, 0x0002
function: 6 (network)
==========================================================================
Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
drivers/net/wireless/hostap/hostap_cs.c | 6 ++++++
1 file changed, 6 insertions(+)
Index: linux/drivers/net/wireless/hostap/hostap_cs.c
===================================================================
--- linux.orig/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:23:00.000000000 +0200
+++ linux/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:25:45.000000000 +0200
@@ -923,6 +923,12 @@
PCMCIA_DEVICE_PROD_ID12(
"ZoomAir 11Mbps High", "Rate wireless Networking",
0x273fe3db, 0x32a1eaee),
+ PCMCIA_DEVICE_PROD_ID123(
+ "Pretec", "CompactWLAN Card 802.11b", "2.5",
+ 0x1cadd3e5, 0xe697636c, 0x7a5bfcf1),
+ PCMCIA_DEVICE_PROD_ID123(
+ "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02",
+ 0xc7b8df9d, 0x1700d087, 0x4b74baa0),
PCMCIA_DEVICE_NULL
};
MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids);

View File

@@ -1,27 +0,0 @@
From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
Add TRENDnet TE-CF100 ethernet adapter to pcnet_cs list.
product info: "Fast Ethernet", "CF Size PC Card", "1.0", ""
manfid: 0x0149, 0xc1ab
Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
drivers/net/pcmcia/pcnet_cs.c | 2 ++
1 file changed, 2 insertions(+)
Index: netdev-2.6/drivers/net/pcmcia/pcnet_cs.c
===================================================================
--- netdev-2.6.orig/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:06:43.294022480 +0200
+++ netdev-2.6/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:10:31.548322552 +0200
@@ -1768,6 +1768,8 @@
PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "NE2K.cis"),
PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"),
PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
+ PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
+ 0xb4be14e3, 0x43ac239b, 0x0877b627),
PCMCIA_DEVICE_NULL
};
MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);

View File

@@ -1,24 +0,0 @@
#
# Patch managed by http://www.holgerschurig.de/patcher.html
#
--- linux-2.6.11-rc1/init/version.c~add-oz-release-string
+++ linux-2.6.11-rc1/init/version.c
@@ -29,5 +29,5 @@
EXPORT_SYMBOL(system_utsname);
const char linux_banner[] =
- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
+ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
--- linux-2.6.11-rc1/Makefile~add-oz-release-string
+++ linux-2.6.11-rc1/Makefile
@@ -827,6 +827,7 @@
exit 1; \
fi; \
(echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
+ echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\"; \
echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
)

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,63 +0,0 @@
From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
Few cards informations submitted by OpenZaurus users.
Seagate 8GB microdrive:
product info: "SEAGATE", "ST1"
manfid 0x0111, 0x0000
One CF card:
product info: "SAMSUNG", "04/05/06", "", ""
manfid : 0x0000, 0x0000
Ridata 8GB Pro 150X Compact Flash Card:
product info: "SMI VENDOR", "SMI PRODUCT", ""
manfid: 0x000a, 0x0000
product info: "M-Systems", "CF500", ""
manfid: 0x000a, 0x0000
product info: "TRANSCEND", "TS4GCF120", ""
manfid: 0x000a, 0x0000
Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
drivers/ide/legacy/ide-cs.c | 5 +++++
drivers/net/pcmcia/pcnet_cs.c | 2 ++
2 files changed, 7 insertions(+)
Index: linux-2.6.18/drivers/ide/legacy/ide-cs.c
===================================================================
--- linux-2.6.18.orig/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:51.000000000 +0000
+++ linux-2.6.18/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:55.000000000 +0000
@@ -398,12 +398,17 @@ static struct pcmcia_device_id ide_ids[]
PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
+ PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
+ PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883),
+ PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d),
+ PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
+ PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
Index: linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c
===================================================================
--- linux-2.6.18.orig/drivers/net/pcmcia/pcnet_cs.c 2006-09-20 04:42:06.000000000 +0100
+++ linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c 2006-12-06 00:57:27.000000000 +0000
@@ -1770,6 +1770,8 @@ static struct pcmcia_device_id pcnet_ids
PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
0xb4be14e3, 0x43ac239b, 0x0877b627),
+ PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
+ 0x00b2e941, 0x43ac239b, 0x0877b627),
PCMCIA_DEVICE_NULL
};
MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);

View File

@@ -1,88 +0,0 @@
This patch should resolve problem when people get eth0 (orinoco_cs) instead of wlan0 (hostap_cs)
with their WiFi cards.
Patch will NEVER been accepted upstream.
Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
Index: linux/drivers/net/wireless/orinoco_cs.c
===================================================================
--- linux.orig/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:04:10.000000000 +0200
+++ linux/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:17:43.000000000 +0200
@@ -453,33 +453,21 @@
"Pavel Roskin <proski@gnu.org>, et al)";
static struct pcmcia_device_id orinoco_cs_ids[] = {
- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */
- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), /* Sohoware NCP110, Philips 802.11b */
PCMCIA_DEVICE_MANF_CARD(0x0089, 0x0002), /* AnyPoint(TM) Wireless II PC Card */
- PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */
- PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000), /* PROXIM RangeLAN-DS/LAN PC CARD */
PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), /* Compaq WL100 11 Mbps Wireless Adapter */
PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), /* Lucent Orinoco and old Intersil */
PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */
PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */
PCMCIA_DEVICE_MANF_CARD(0x01ff, 0x0008), /* Intermec MobileLAN 11Mbps 802.11b WLAN Card */
- PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */
PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */
PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */
PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */
- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */
- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */
- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0002), /* Compaq HNW-100 11 Mbps Wireless Adapter */
PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */
- PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */
PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */
PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */
- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */
PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */
PCMCIA_DEVICE_MANF_CARD(0xc001, 0x0008), /* CONTEC FLEXSCAN/FX-DDS110-PCC */
PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), /* Conceptronic CON11Cpro, EMTAC A2424i */
- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), /* Safeway 802.11b, ZCOMAX AirRunner/XI-300 */
- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), /* D-Link DCF660, Sandisk Connect SDWCFB-000 */
PCMCIA_DEVICE_PROD_ID12(" ", "IEEE 802.11 Wireless LAN/PC Card", 0x3b6e20c8, 0xefccafe9),
PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE737A AirConnect Wireless LAN PC Card", 0x41240e5b, 0x56010af3),
PCMCIA_DEVICE_PROD_ID12("ACTIONTEC", "PRISM Wireless LAN PC Card", 0x393089da, 0xa71e69d5),
@@ -487,31 +475,25 @@
PCMCIA_DEVICE_PROD_ID123("AIRVAST", "IEEE 802.11b Wireless PCMCIA Card", "HFA3863", 0xea569531, 0x4bcb9645, 0x355cb092),
PCMCIA_DEVICE_PROD_ID12("Allied Telesyn", "AT-WCL452 Wireless PCMCIA Radio", 0x5cd01705, 0x4271660f),
PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11b_PC_CARD_25", 0x78fc06ee, 0xdb9aa842),
- PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11B_CF_CARD_25", 0x78fc06ee, 0x45a50c1e),
PCMCIA_DEVICE_PROD_ID12("Avaya Communication", "Avaya Wireless PC Card", 0xd8a43b78, 0x0d341169),
PCMCIA_DEVICE_PROD_ID12("BENQ", "AWL100 PCMCIA ADAPTER", 0x35dadc74, 0x01f7fedb),
PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-PCM-L11G", 0x2decece3, 0xf57ca4b3),
- PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-CF-S11G", 0x2decece3, 0x82067c18),
PCMCIA_DEVICE_PROD_ID12("Cabletron", "RoamAbout 802.11 DS", 0x32d445f5, 0xedeffd90),
- PCMCIA_DEVICE_PROD_ID12("Compaq", "WL200_11Mbps_Wireless_PCI_Card", 0x54f7c49c, 0x15a75e5b),
PCMCIA_DEVICE_PROD_ID123("corega", "WL PCCL-11", "ISL37300P", 0x0a21501a, 0x59868926, 0xc9049a39),
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCC-11", 0x5261440f, 0xa6405584),
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCCA-11", 0x5261440f, 0xdf6115f9),
PCMCIA_DEVICE_PROD_ID12("corega_K.K.", "Wireless_LAN_PCCB-11", 0x29e33311, 0xee7a27ae),
PCMCIA_DEVICE_PROD_ID12("D", "Link DRC-650 11Mbps WLAN Card", 0x71b18589, 0xf144e3ac),
- PCMCIA_DEVICE_PROD_ID12("D", "Link DWL-650 11Mbps WLAN Card", 0x71b18589, 0xb6f1b0ab),
PCMCIA_DEVICE_PROD_ID12("D-Link Corporation", "D-Link DWL-650H 11Mbps WLAN Adapter", 0xef544d24, 0xcd8ea916),
PCMCIA_DEVICE_PROD_ID12("Digital Data Communications", "WPC-0100", 0xfdd73470, 0xe0b6f146),
PCMCIA_DEVICE_PROD_ID12("ELSA", "AirLancer MC-11", 0x4507a33a, 0xef54f0e3),
PCMCIA_DEVICE_PROD_ID12("HyperLink", "Wireless PC Card 11Mbps", 0x56cc3f1a, 0x0bcf220c),
PCMCIA_DEVICE_PROD_ID123("Instant Wireless ", " Network PC CARD", "Version 01.02", 0x11d901af, 0x6e9bd926, 0x4b74baa0),
PCMCIA_DEVICE_PROD_ID12("Intel", "PRO/Wireless 2011 LAN PC Card", 0x816cc815, 0x07f58077),
- PCMCIA_DEVICE_PROD_ID12("INTERSIL", "HFA384x/IEEE", 0x74c5e40d, 0xdb472a18),
PCMCIA_DEVICE_PROD_ID12("INTERSIL", "I-GATE 11M PC Card / PC Card plus", 0x74c5e40d, 0x8304ff77),
PCMCIA_DEVICE_PROD_ID12("Intersil", "PRISM 2_5 PCMCIA ADAPTER", 0x4b801a17, 0x6345a0bf),
PCMCIA_DEVICE_PROD_ID123("Intersil", "PRISM Freedom PCMCIA Adapter", "ISL37100P", 0x4b801a17, 0xf222ec2d, 0x630d52b2),
PCMCIA_DEVICE_PROD_ID12("LeArtery", "SYNCBYAIR 11Mbps Wireless LAN PC Card", 0x7e3b326a, 0x49893e92),
- PCMCIA_DEVICE_PROD_ID12("Linksys", "Wireless CompactFlash Card", 0x0733cc81, 0x0c52f395),
PCMCIA_DEVICE_PROD_ID12("Lucent Technologies", "WaveLAN/IEEE", 0x23eb9949, 0xc562e72a),
PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11", 0x481e0094, 0x7360e410),
PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11G", 0x481e0094, 0xf57ca4b3),
@@ -529,10 +511,8 @@
PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26),
PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b),
PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2532W-B EliteConnect Wireless Adapter", 0xc4f8b18b, 0x196bd757),
- PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2632W", 0xc4f8b18b, 0x474a1f2a),
PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e),
PCMCIA_DEVICE_PROD_ID123("The Linksys Group, Inc.", "Instant Wireless Network PC Card", "ISL37300P", 0xa5f472c2, 0x590eb502, 0xc9049a39),
- PCMCIA_DEVICE_PROD_ID12("ZoomAir 11Mbps High", "Rate wireless Networking", 0x273fe3db, 0x32a1eaee),
PCMCIA_DEVICE_NULL,
};
MODULE_DEVICE_TABLE(pcmcia, orinoco_cs_ids);

View File

@@ -1,73 +0,0 @@
Index: linux-2.6.14/drivers/serial/8250.c
===================================================================
--- linux-2.6.14.orig/drivers/serial/8250.c 2005-11-07 18:10:50.000000000 +0000
+++ linux-2.6.14/drivers/serial/8250.c 2005-11-07 19:01:21.000000000 +0000
@@ -2333,7 +2333,12 @@
.devfs_name = "tts/",
.dev_name = "ttyS",
.major = TTY_MAJOR,
+#ifdef CONFIG_SERIAL_PXA
+ .minor = 64 + 3,
+ .name_base = 3,
+#else
.minor = 64,
+#endif
.nr = UART_NR,
.cons = SERIAL8250_CONSOLE,
};
Index: linux-2.6.14/drivers/serial/serial_core.c
===================================================================
--- linux-2.6.14.orig/drivers/serial/serial_core.c 2005-11-07 18:10:50.000000000 +0000
+++ linux-2.6.14/drivers/serial/serial_core.c 2005-11-07 19:01:21.000000000 +0000
@@ -2126,6 +2126,7 @@
normal->driver_name = drv->driver_name;
normal->devfs_name = drv->devfs_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.14/include/linux/serial_core.h
===================================================================
--- linux-2.6.14.orig/include/linux/serial_core.h 2005-11-07 18:10:56.000000000 +0000
+++ linux-2.6.14/include/linux/serial_core.h 2005-11-07 19:01:21.000000000 +0000
@@ -322,6 +322,7 @@
const char *driver_name;
const char *dev_name;
const char *devfs_name;
+ int name_base;
int major;
int minor;
int nr;
Index: linux-2.6.14/drivers/serial/serial_cs.c
===================================================================
--- linux-2.6.14.orig/drivers/serial/serial_cs.c 2005-10-28 01:02:08.000000000 +0100
+++ linux-2.6.14/drivers/serial/serial_cs.c 2005-11-07 19:01:21.000000000 +0000
@@ -294,7 +294,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;
@@ -311,10 +311,16 @@
return -EINVAL;
}
+#if CONFIG_SERIAL_PXA
+ linestart = 3;
+#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

@@ -1,155 +0,0 @@
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 files changed, 64 insertions(+), 18 deletions(-)
diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
--- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
@@ -1653,24 +1653,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
@@ -1680,7 +1714,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:
@@ -1712,8 +1746,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
@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
/*
+ * 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

View File

@@ -1,157 +0,0 @@
Index: linux-tosa/arch/arm/mach-pxa/tosa.c
===================================================================
--- linux-tosa.orig/arch/arm/mach-pxa/tosa.c 2006-08-29 16:52:59.000000000 +0100
+++ linux-tosa/arch/arm/mach-pxa/tosa.c 2006-08-29 16:55:25.959706776 +0100
@@ -2,6 +2,7 @@
* Support for Sharp SL-C6000x PDAs
* Model: (Tosa)
*
+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
* Copyright (c) 2005 Dirk Opfer
*
* Based on code written by Sharp/Lineo for 2.4 kernels
@@ -46,6 +47,8 @@
#include <asm/hardware/tmio.h>
#include <asm/mach/sharpsl_param.h>
+#include <linux/wm97xx.h>
+
#include "generic.h"
/*
@@ -428,6 +431,16 @@
},
};
+
+/*
+ * Tosa Touchscreen device
+ */
+
+static struct wm97xx_machinfo tosa_ts_machinfo = {
+ .get_hsync_time = tosa_get_hsync_time,
+ .wait_hsync = tosa_wait_hsync,
+};
+
/*
* Tosa Blueooth
*/
@@ -457,6 +470,7 @@
GPSR(TOSA_GPIO_ON_RESET) = GPIO_bit(TOSA_GPIO_ON_RESET);
mdelay(1000);
+ wm97xx_unset_machinfo();
}
static void tosa_restart(void)
@@ -501,6 +515,8 @@
platform_scoop_config = &tosa_pcmcia_config;
platform_add_devices(devices, ARRAY_SIZE(devices));
+
+ wm97xx_set_machinfo(&tosa_ts_machinfo);
}
static void __init fixup_tosa(struct machine_desc *desc,
Index: linux-tosa/arch/arm/mach-pxa/tosa_lcd.c
===================================================================
--- linux-tosa.orig/arch/arm/mach-pxa/tosa_lcd.c 2006-08-29 16:52:59.000000000 +0100
+++ linux-tosa/arch/arm/mach-pxa/tosa_lcd.c 2006-08-29 16:55:32.818664056 +0100
@@ -1,6 +1,7 @@
/*
* LCD / Backlight control code for Sharp SL-6000x (tosa)
*
+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
* Copyright (c) 2005 Dirk Opfer
*
* This program is free software; you can redistribute it and/or modify
@@ -59,6 +60,8 @@
static struct ssp_dev tosa_nssp_dev;
static struct ssp_state tosa_nssp_state;
static spinlock_t tosa_nssp_lock;
+static int blanked;
+static unsigned long hsync_time;
static unsigned short normal_i2c[] = {
DAC_BASE,
@@ -130,6 +133,17 @@
pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
}
+static unsigned long calc_hsync_time(const struct fb_videomode *mode) {
+ /* The 25 and 44 'magic numbers' are from Sharp's 2.4 patches */
+ if (mode->yres == 640) {
+ return 25;
+ }
+ if (mode->yres == 320) {
+ return 44;
+ }
+ return 0;
+}
+
static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
{
const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
@@ -154,6 +168,8 @@
/* set common voltage */
i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
+ blanked = 0;
+ hsync_time = calc_hsync_time(mode);
}
static void tosa_lcd_tg_off(struct device *dev)
@@ -172,6 +188,8 @@
/* L3V Off */
reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
+
+ blanked = 1;
}
static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
@@ -238,6 +256,23 @@
return 0;
}
+unsigned long tosa_get_hsync_time(void)
+{
+/* This method should eventually contain the correct algorithm for calculating
+ the hsync_time */
+ if (blanked)
+ return 0;
+ else
+ return hsync_time;
+}
+
+void tosa_wait_hsync(void)
+{
+ /* Waits for a rising edge on the VGA line */
+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) == 0);
+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) != 0);
+}
+
static struct i2c_driver tosa_driver={
.id = TOSA_LCD_I2C_DEVICEID,
.attach_adapter = tosa_attach_adapter,
Index: linux-tosa/include/asm-arm/arch-pxa/tosa.h
===================================================================
--- linux-tosa.orig/include/asm-arm/arch-pxa/tosa.h 2006-08-29 16:52:59.000000000 +0100
+++ linux-tosa/include/asm-arm/arch-pxa/tosa.h 2006-08-29 16:55:12.442761664 +0100
@@ -1,6 +1,7 @@
/*
* Hardware specific definitions for Sharp SL-C6000x series of PDAs
*
+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
* Copyright (c) 2005 Dirk Opfer
*
* Based on Sharp's 2.4 kernel patches
@@ -187,4 +188,8 @@
extern struct platform_device tosascoop_jc_device;
extern struct platform_device tosascoop_device;
extern struct platform_device tc6393_device;
+
+unsigned long tosa_get_hsync_time(void);
+void tosa_wait_hsync(void);
+
#endif /* _ASM_ARCH_TOSA_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -1,44 +0,0 @@
sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
Index: linux-2.6.18/sound/soc/codecs/wm9712.c
===================================================================
--- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:25:33.000000000 +0000
+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:27:20.000000000 +0000
@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_
static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
{
- if (try_warm && soc_ac97_ops.warm_reset) {
- soc_ac97_ops.warm_reset(codec->ac97);
- if (!(ac97_read(codec, 0) & 0x8000))
- return 1;
- }
+ int retry = 3;
+
+ while (retry--)
+ {
+ if(try_warm && soc_ac97_ops.warm_reset) {
+ soc_ac97_ops.warm_reset(codec->ac97);
+ if(ac97_read(codec, 0) & 0x8000)
+ continue;
+ else
+ return 1;
+ }
- soc_ac97_ops.reset(codec->ac97);
- if (ac97_read(codec, 0) & 0x8000)
- goto err;
- return 0;
+ soc_ac97_ops.reset(codec->ac97);
+ if(ac97_read(codec, 0) & 0x8000)
+ continue;
+ else
+ return 0;
+
+ }
-err:
printk(KERN_ERR "WM9712 AC97 reset failed\n");
return -EIO;
}

View File

@@ -1,16 +0,0 @@
sound/soc/codecs/wm9712.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6.18/sound/soc/codecs/wm9712.c
===================================================================
--- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:19:53.000000000 +0000
+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:22:04.000000000 +0000
@@ -651,7 +651,7 @@ static int wm9712_soc_resume(struct plat
int i, ret;
u16 *cache = codec->reg_cache;
- ret = wm9712_reset(codec, 1);
+ ret = wm9712_reset(codec, 0);
if (ret < 0){
printk(KERN_ERR "could not reset AC97 codec\n");
return ret;

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

View File

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

View File

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

View File

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

@@ -1,155 +0,0 @@
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 files changed, 64 insertions(+), 18 deletions(-)
diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
--- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
@@ -1653,24 +1653,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
@@ -1680,7 +1714,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:
@@ -1712,8 +1746,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
@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
/*
+ * 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.
*/
_

View File

@@ -1,519 +0,0 @@
Index: linux-2.6.20/arch/arm/mach-pxa/spitz.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz.c
+++ linux-2.6.20/arch/arm/mach-pxa/spitz.c
@@ -244,6 +244,13 @@ static struct platform_device spitzkbd_d
.id = -1,
};
+/*
+ * Spitz Remote Control Device
+ */
+static struct platform_device sharpsl_rc_device = {
+ .name = "sharpsl-remote-control",
+ .id = -1,
+};
/*
* Spitz LEDs
@@ -476,6 +483,7 @@ static struct platform_device *devices[]
&spitzscoop_device,
&spitzssp_device,
&spitzkbd_device,
+ &sharpsl_rc_device,
&spitzts_device,
&spitzbl_device,
&spitzled_device,
Index: linux-2.6.20/drivers/input/keyboard/Kconfig
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/Kconfig
+++ linux-2.6.20/drivers/input/keyboard/Kconfig
@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
To compile this driver as a module, choose M here: the
module will be called spitzkbd.
+config SHARPSL_RC
+ tristate "Sharp SL-Cxx00 Remote Control"
+ depends on PXA_SHARPSL
+ default y
+ help
+ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
+ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
+
+ To compile this driver as a module, choose M here: the
+ module will be called sharpsl_rc.
+
config KEYBOARD_AMIGA
tristate "Amiga keyboard"
depends on AMIGA
Index: linux-2.6.20/drivers/input/keyboard/Makefile
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/Makefile
+++ linux-2.6.20/drivers/input/keyboard/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
+obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
===================================================================
--- /dev/null
+++ linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
@@ -0,0 +1,291 @@
+/*
+ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
+ *
+ * Copyright (c) 2004-2005 Richard Purdie
+ *
+ * Based on corgikbd.c and Sharp's RC driver
+ *
+ * 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.
+ *
+ */
+
+#define DEBUG 1
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/init.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/jiffies.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+
+#ifdef CONFIG_MACH_SPITZ
+#include <asm/arch/spitz.h>
+#endif
+#ifdef CONFIG_MACH_CORGI
+#include <asm/arch/corgi.h>
+#endif
+
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/hardware/scoop.h>
+#include <asm/arch/sharpsl.h>
+#include <asm/hardware/sharpsl_pm.h>
+
+#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
+
+struct remote_control_key {
+ unsigned char min;
+ unsigned char max;
+ unsigned char key;
+};
+
+#ifdef CONFIG_MACH_SPITZ
+#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
+#define REMOTE_SCOOP_DEVICE spitzscoop2_device
+#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
+#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
+static struct remote_control_key remote_keys[] = {
+ { 25, 35, KEY_STOPCD},
+ { 55, 65, KEY_PLAYPAUSE},
+ { 85, 95, KEY_NEXTSONG},
+ { 115, 125, KEY_VOLUMEUP},
+ { 145, 155, KEY_PREVIOUSSONG},
+ { 180, 190, KEY_MUTE},
+ { 215, 225, KEY_VOLUMEDOWN},
+};
+#endif
+#ifdef CONFIG_MACH_CORGI
+#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
+#define REMOTE_SCOOP_DEVICE corgiscoop_device
+#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
+#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
+static struct remote_control_key remote_keys[] = {
+ //These need to be fixed for the CE-RH1's values
+ { 25, 35, KEY_STOPCD},
+ { 55, 65, KEY_PLAYPAUSE},
+ { 85, 95, KEY_NEXTSONG},
+ { 115, 125, KEY_VOLUMEUP},
+ { 145, 155, KEY_PREVIOUSSONG},
+ { 180, 190, KEY_MUTE},
+ { 215, 225, KEY_VOLUMEDOWN},
+};
+#endif
+
+#define RELEASE_HI 230
+#define MAX_EARPHONE 6
+#define RC_POLL_MS 10
+#define RC_FINISH_MS 500
+#define WAIT_STATE 3
+#define NOISE_THRESHOLD 100
+
+struct sharpsl_rc {
+ struct input_dev *input;
+ struct device *dev;
+
+ spinlock_t lock;
+ struct timer_list rctimer;
+ struct timer_list rctimer_finish;
+
+ unsigned int handling_press;
+ unsigned int noise;
+ unsigned int state;
+ unsigned int last_key;
+};
+
+static int get_remocon_raw(void)
+{
+ int i, val;
+
+ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
+ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
+ if (val >= remote_keys[i].min
+ && val <= remote_keys[i].max) {
+ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
+ return remote_keys[i].key;
+ }
+ }
+ return 0;
+}
+
+static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ struct sharpsl_rc *data = dev_id;
+ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
+ if (!data->handling_press) {
+ DPRINTK("handling interrupt");
+ data->handling_press = 1;
+ data->noise = 0;
+ data->state = 0;
+ data->last_key = 0;
+
+ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
+
+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
+ }
+ return IRQ_HANDLED;
+}
+
+static void sharpsl_rc_timer_callback(unsigned long dataPtr)
+{
+ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
+ int timer = 1;
+ int key = get_remocon_raw();
+ DPRINTK("timer callback, key: %d", key);
+
+ //wait for value to stabilize
+ if (data->state < WAIT_STATE) {
+ if (data->last_key != key) {
+ ++data->noise;
+ if (data->noise > NOISE_THRESHOLD) {
+ DPRINTK("too much noise, bailing");
+ timer = 0;
+ }
+ data->state = 0;
+ } else {
+ ++data->state;
+ }
+ data->last_key = key;
+
+ //stable value, send event
+ } else if (data->state == WAIT_STATE) {
+ data->noise = 0;
+ //non-key returned, skip the rest of the states and bail now
+ if (data->last_key == 0) {
+ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
+ timer = 0;
+ //send button press
+ } else {
+ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
+ input_report_key(data->input, data->last_key, 1);
+ }
+ ++data->state;
+
+ //wait until key is released
+ } else if (data->state < WAIT_STATE * 2) {
+ if (key == data->last_key
+ && data->noise < NOISE_THRESHOLD) {
+ data->state = WAIT_STATE + 1;
+ ++data->noise;
+ } else {
+ ++data->state;
+ }
+ //key is released, send event
+ } else {
+ //send button release
+ DPRINTK("release key %d", data->last_key);
+ input_report_key(data->input, data->last_key, 0);
+ timer = 0;
+ }
+ if (timer) {
+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
+ } else {
+ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
+ data->handling_press = 0;
+ }
+}
+
+static int __init sharpsl_rc_probe(struct platform_device *pdev)
+{
+ struct sharpsl_rc *sharpsl_rc;
+ struct input_dev *input_dev;
+ int i, ret;
+
+ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
+
+ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
+ input_dev = input_allocate_device();
+ if (!sharpsl_rc || !input_dev) {
+ kfree(sharpsl_rc);
+ input_free_device(input_dev);
+ return -ENOMEM;
+ }
+
+ platform_set_drvdata(pdev, sharpsl_rc);
+
+ sharpsl_rc->dev = &pdev->dev;
+ sharpsl_rc->input = input_dev;
+ spin_lock_init(&sharpsl_rc->lock);
+
+ /* Init Remote Control Timer */
+ init_timer(&sharpsl_rc->rctimer);
+ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
+ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
+
+ input_dev->name = "Sharp Remote Control CE-RHX";
+ input_dev->phys = "sharpsl_rc/input0";
+ input_dev->id.bustype = BUS_HOST;
+ input_dev->id.vendor = 0x0001;
+ input_dev->id.product = 0x0001;
+ input_dev->id.version = 0x0100;
+ input_dev->cdev.dev = &pdev->dev;
+ input_dev->private = sharpsl_rc;
+
+ input_dev->evbit[0] = BIT(EV_KEY);
+
+ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
+ set_bit(remote_keys[i].key, input_dev->keybit);
+
+ input_register_device(sharpsl_rc->input);
+
+ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
+ ret = request_irq(REMOTE_IRQ_INT,
+ sharpsl_rc_interrupt,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
+ "sharpsl_rc",
+ sharpsl_rc);
+ if (ret < 0) {
+ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
+ kfree(sharpsl_rc);
+ input_free_device(input_dev);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int sharpsl_rc_remove(struct platform_device *pdev)
+{
+ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
+
+ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
+
+ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
+ del_timer_sync(&sharpsl_rc->rctimer);
+ input_unregister_device(sharpsl_rc->input);
+ kfree(sharpsl_rc);
+
+ return 0;
+}
+
+static struct platform_driver sharpsl_rc_driver = {
+ .probe = sharpsl_rc_probe,
+ .remove = sharpsl_rc_remove,
+ .suspend = NULL,
+ .resume = NULL,
+ .driver = {
+ .name = "sharpsl-remote-control",
+ },
+};
+
+static int __devinit sharpsl_rc_init(void)
+{
+ printk("sharpsl_rc_init\n");
+ return platform_driver_register(&sharpsl_rc_driver);
+}
+
+static void __exit sharpsl_rc_exit(void)
+{
+ printk("sharpsl_rc_exit\n");
+ platform_driver_unregister(&sharpsl_rc_driver);
+}
+
+module_init(sharpsl_rc_init);
+module_exit(sharpsl_rc_exit);
+
+MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
+MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
+MODULE_DESCRIPTION("SharpSL Remote Control Driver");
+MODULE_LICENSE("GPL");
Index: linux-2.6.20/drivers/input/keyboard/spitzkbd.c
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/spitzkbd.c
+++ linux-2.6.20/drivers/input/keyboard/spitzkbd.c
@@ -19,6 +19,7 @@
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/kmod.h>
#include <asm/arch/spitz.h>
#include <asm/arch/hardware.h>
@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
static int sharpsl_hinge_state;
static int hinge_count;
+void spitzkbd_handle_sharpsl_rc(void *arg) {
+ request_module("sharpsl_rc");
+}
+
+DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
+
static void spitzkbd_hinge_timer(unsigned long data)
{
struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
unsigned long state;
unsigned long flags;
+ unsigned int headphone, remote;
state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
+ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
if (state != sharpsl_hinge_state) {
hinge_count = 0;
@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
+
+ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
+ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
+
+ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
+ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
input_sync(spitzkbd_data->input);
+ if (remote) {
+ schedule_work(&spitzkbd_work);
+ }
+
spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
} else {
mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
@@ -394,6 +412,7 @@ static int __init spitzkbd_probe(struct
set_bit(SW_LID, input_dev->swbit);
set_bit(SW_TABLET_MODE, input_dev->swbit);
set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
+ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
err = input_register_device(input_dev);
if (err)
@@ -431,9 +450,12 @@ static int __init spitzkbd_probe(struct
request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"Spitzkbd SWB", spitzkbd);
- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
+ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"Spitzkbd HP", spitzkbd);
+ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
+ "Spitzkbd HP Type", spitzkbd);
return 0;
@@ -454,6 +476,7 @@ static int spitzkbd_remove(struct platfo
free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
del_timer_sync(&spitzkbd->htimer);
Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl.h
+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
#define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
-/* MAX1111 Channel Definitions */
-#define MAX1111_BATT_VOLT 4u
-#define MAX1111_BATT_TEMP 2u
-#define MAX1111_ACIN_VOLT 6u
-
extern struct battery_thresh spitz_battery_levels_acin[];
extern struct battery_thresh spitz_battery_levels_noac[];
void sharpsl_pm_pxa_init(void);
void sharpsl_pm_pxa_remove(void);
-int sharpsl_pm_pxa_read_max1111(int channel);
+
Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl_pm.c
+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
| MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
}
+EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
+
void sharpsl_pm_pxa_init(void)
{
pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
Index: linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
===================================================================
--- linux-2.6.20.orig/include/asm-arm/hardware/sharpsl_pm.h
+++ linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+/* MAX1111 Channel Definitions */
+#define MAX1111_REMCOM 0u
+#define MAX1111_BATT_VOLT 4u
+#define MAX1111_BATT_TEMP 2u
+#define MAX1111_ACIN_VOLT 6u
+
+int sharpsl_pm_pxa_read_max1111(int channel);
Index: linux-2.6.20/include/linux/input.h
===================================================================
--- linux-2.6.20.orig/include/linux/input.h
+++ linux-2.6.20/include/linux/input.h
@@ -602,6 +602,7 @@ struct input_absinfo {
#define SW_LID 0x00 /* set = lid shut */
#define SW_TABLET_MODE 0x01 /* set = tablet mode */
#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
+#define SW_REMOTE_INSERT 0x04 /* set = remote */
#define SW_MAX 0x0f
/*
Index: linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz_pm.c
+++ linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
@@ -161,6 +161,13 @@ static int spitz_should_wakeup(unsigned
if (resume_on_alarm && (PEDR & PWER_RTC))
is_resume |= PWER_RTC;
+ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
+
+ //remote/headphone interrupt, wakeup
+ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
+ is_resume |= PWER_RTC;
+ }
+
dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
return is_resume;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

View File

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

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

View File

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

View File

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

@@ -1,155 +0,0 @@
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 files changed, 64 insertions(+), 18 deletions(-)
diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
--- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
@@ -1653,24 +1653,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
@@ -1680,7 +1714,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:
@@ -1712,8 +1746,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
@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
/*
+ * 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.
*/
_

View File

@@ -1,519 +0,0 @@
Index: linux-2.6.20/arch/arm/mach-pxa/spitz.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz.c
+++ linux-2.6.20/arch/arm/mach-pxa/spitz.c
@@ -244,6 +244,13 @@ static struct platform_device spitzkbd_d
.id = -1,
};
+/*
+ * Spitz Remote Control Device
+ */
+static struct platform_device sharpsl_rc_device = {
+ .name = "sharpsl-remote-control",
+ .id = -1,
+};
/*
* Spitz LEDs
@@ -476,6 +483,7 @@ static struct platform_device *devices[]
&spitzscoop_device,
&spitzssp_device,
&spitzkbd_device,
+ &sharpsl_rc_device,
&spitzts_device,
&spitzbl_device,
&spitzled_device,
Index: linux-2.6.20/drivers/input/keyboard/Kconfig
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/Kconfig
+++ linux-2.6.20/drivers/input/keyboard/Kconfig
@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
To compile this driver as a module, choose M here: the
module will be called spitzkbd.
+config SHARPSL_RC
+ tristate "Sharp SL-Cxx00 Remote Control"
+ depends on PXA_SHARPSL
+ default y
+ help
+ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
+ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
+
+ To compile this driver as a module, choose M here: the
+ module will be called sharpsl_rc.
+
config KEYBOARD_AMIGA
tristate "Amiga keyboard"
depends on AMIGA
Index: linux-2.6.20/drivers/input/keyboard/Makefile
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/Makefile
+++ linux-2.6.20/drivers/input/keyboard/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
+obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
===================================================================
--- /dev/null
+++ linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
@@ -0,0 +1,291 @@
+/*
+ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
+ *
+ * Copyright (c) 2004-2005 Richard Purdie
+ *
+ * Based on corgikbd.c and Sharp's RC driver
+ *
+ * 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.
+ *
+ */
+
+#define DEBUG 1
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/init.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/jiffies.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+
+#ifdef CONFIG_MACH_SPITZ
+#include <asm/arch/spitz.h>
+#endif
+#ifdef CONFIG_MACH_CORGI
+#include <asm/arch/corgi.h>
+#endif
+
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/hardware/scoop.h>
+#include <asm/arch/sharpsl.h>
+#include <asm/hardware/sharpsl_pm.h>
+
+#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
+
+struct remote_control_key {
+ unsigned char min;
+ unsigned char max;
+ unsigned char key;
+};
+
+#ifdef CONFIG_MACH_SPITZ
+#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
+#define REMOTE_SCOOP_DEVICE spitzscoop2_device
+#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
+#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
+static struct remote_control_key remote_keys[] = {
+ { 25, 35, KEY_STOPCD},
+ { 55, 65, KEY_PLAYPAUSE},
+ { 85, 95, KEY_NEXTSONG},
+ { 115, 125, KEY_VOLUMEUP},
+ { 145, 155, KEY_PREVIOUSSONG},
+ { 180, 190, KEY_MUTE},
+ { 215, 225, KEY_VOLUMEDOWN},
+};
+#endif
+#ifdef CONFIG_MACH_CORGI
+#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
+#define REMOTE_SCOOP_DEVICE corgiscoop_device
+#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
+#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
+static struct remote_control_key remote_keys[] = {
+ //These need to be fixed for the CE-RH1's values
+ { 25, 35, KEY_STOPCD},
+ { 55, 65, KEY_PLAYPAUSE},
+ { 85, 95, KEY_NEXTSONG},
+ { 115, 125, KEY_VOLUMEUP},
+ { 145, 155, KEY_PREVIOUSSONG},
+ { 180, 190, KEY_MUTE},
+ { 215, 225, KEY_VOLUMEDOWN},
+};
+#endif
+
+#define RELEASE_HI 230
+#define MAX_EARPHONE 6
+#define RC_POLL_MS 10
+#define RC_FINISH_MS 500
+#define WAIT_STATE 3
+#define NOISE_THRESHOLD 100
+
+struct sharpsl_rc {
+ struct input_dev *input;
+ struct device *dev;
+
+ spinlock_t lock;
+ struct timer_list rctimer;
+ struct timer_list rctimer_finish;
+
+ unsigned int handling_press;
+ unsigned int noise;
+ unsigned int state;
+ unsigned int last_key;
+};
+
+static int get_remocon_raw(void)
+{
+ int i, val;
+
+ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
+ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
+ if (val >= remote_keys[i].min
+ && val <= remote_keys[i].max) {
+ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
+ return remote_keys[i].key;
+ }
+ }
+ return 0;
+}
+
+static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ struct sharpsl_rc *data = dev_id;
+ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
+ if (!data->handling_press) {
+ DPRINTK("handling interrupt");
+ data->handling_press = 1;
+ data->noise = 0;
+ data->state = 0;
+ data->last_key = 0;
+
+ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
+
+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
+ }
+ return IRQ_HANDLED;
+}
+
+static void sharpsl_rc_timer_callback(unsigned long dataPtr)
+{
+ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
+ int timer = 1;
+ int key = get_remocon_raw();
+ DPRINTK("timer callback, key: %d", key);
+
+ //wait for value to stabilize
+ if (data->state < WAIT_STATE) {
+ if (data->last_key != key) {
+ ++data->noise;
+ if (data->noise > NOISE_THRESHOLD) {
+ DPRINTK("too much noise, bailing");
+ timer = 0;
+ }
+ data->state = 0;
+ } else {
+ ++data->state;
+ }
+ data->last_key = key;
+
+ //stable value, send event
+ } else if (data->state == WAIT_STATE) {
+ data->noise = 0;
+ //non-key returned, skip the rest of the states and bail now
+ if (data->last_key == 0) {
+ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
+ timer = 0;
+ //send button press
+ } else {
+ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
+ input_report_key(data->input, data->last_key, 1);
+ }
+ ++data->state;
+
+ //wait until key is released
+ } else if (data->state < WAIT_STATE * 2) {
+ if (key == data->last_key
+ && data->noise < NOISE_THRESHOLD) {
+ data->state = WAIT_STATE + 1;
+ ++data->noise;
+ } else {
+ ++data->state;
+ }
+ //key is released, send event
+ } else {
+ //send button release
+ DPRINTK("release key %d", data->last_key);
+ input_report_key(data->input, data->last_key, 0);
+ timer = 0;
+ }
+ if (timer) {
+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
+ } else {
+ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
+ data->handling_press = 0;
+ }
+}
+
+static int __init sharpsl_rc_probe(struct platform_device *pdev)
+{
+ struct sharpsl_rc *sharpsl_rc;
+ struct input_dev *input_dev;
+ int i, ret;
+
+ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
+
+ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
+ input_dev = input_allocate_device();
+ if (!sharpsl_rc || !input_dev) {
+ kfree(sharpsl_rc);
+ input_free_device(input_dev);
+ return -ENOMEM;
+ }
+
+ platform_set_drvdata(pdev, sharpsl_rc);
+
+ sharpsl_rc->dev = &pdev->dev;
+ sharpsl_rc->input = input_dev;
+ spin_lock_init(&sharpsl_rc->lock);
+
+ /* Init Remote Control Timer */
+ init_timer(&sharpsl_rc->rctimer);
+ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
+ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
+
+ input_dev->name = "Sharp Remote Control CE-RHX";
+ input_dev->phys = "sharpsl_rc/input0";
+ input_dev->id.bustype = BUS_HOST;
+ input_dev->id.vendor = 0x0001;
+ input_dev->id.product = 0x0001;
+ input_dev->id.version = 0x0100;
+ input_dev->cdev.dev = &pdev->dev;
+ input_dev->private = sharpsl_rc;
+
+ input_dev->evbit[0] = BIT(EV_KEY);
+
+ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
+ set_bit(remote_keys[i].key, input_dev->keybit);
+
+ input_register_device(sharpsl_rc->input);
+
+ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
+ ret = request_irq(REMOTE_IRQ_INT,
+ sharpsl_rc_interrupt,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
+ "sharpsl_rc",
+ sharpsl_rc);
+ if (ret < 0) {
+ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
+ kfree(sharpsl_rc);
+ input_free_device(input_dev);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int sharpsl_rc_remove(struct platform_device *pdev)
+{
+ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
+
+ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
+
+ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
+ del_timer_sync(&sharpsl_rc->rctimer);
+ input_unregister_device(sharpsl_rc->input);
+ kfree(sharpsl_rc);
+
+ return 0;
+}
+
+static struct platform_driver sharpsl_rc_driver = {
+ .probe = sharpsl_rc_probe,
+ .remove = sharpsl_rc_remove,
+ .suspend = NULL,
+ .resume = NULL,
+ .driver = {
+ .name = "sharpsl-remote-control",
+ },
+};
+
+static int __devinit sharpsl_rc_init(void)
+{
+ printk("sharpsl_rc_init\n");
+ return platform_driver_register(&sharpsl_rc_driver);
+}
+
+static void __exit sharpsl_rc_exit(void)
+{
+ printk("sharpsl_rc_exit\n");
+ platform_driver_unregister(&sharpsl_rc_driver);
+}
+
+module_init(sharpsl_rc_init);
+module_exit(sharpsl_rc_exit);
+
+MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
+MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
+MODULE_DESCRIPTION("SharpSL Remote Control Driver");
+MODULE_LICENSE("GPL");
Index: linux-2.6.20/drivers/input/keyboard/spitzkbd.c
===================================================================
--- linux-2.6.20.orig/drivers/input/keyboard/spitzkbd.c
+++ linux-2.6.20/drivers/input/keyboard/spitzkbd.c
@@ -19,6 +19,7 @@
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/kmod.h>
#include <asm/arch/spitz.h>
#include <asm/arch/hardware.h>
@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
static int sharpsl_hinge_state;
static int hinge_count;
+void spitzkbd_handle_sharpsl_rc(void *arg) {
+ request_module("sharpsl_rc");
+}
+
+DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
+
static void spitzkbd_hinge_timer(unsigned long data)
{
struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
unsigned long state;
unsigned long flags;
+ unsigned int headphone, remote;
state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
+ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
if (state != sharpsl_hinge_state) {
hinge_count = 0;
@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
+
+ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
+ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
+
+ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
+ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
input_sync(spitzkbd_data->input);
+ if (remote) {
+ schedule_work(&spitzkbd_work);
+ }
+
spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
} else {
mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
@@ -394,6 +412,7 @@ static int __init spitzkbd_probe(struct
set_bit(SW_LID, input_dev->swbit);
set_bit(SW_TABLET_MODE, input_dev->swbit);
set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
+ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
err = input_register_device(input_dev);
if (err)
@@ -431,9 +450,12 @@ static int __init spitzkbd_probe(struct
request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"Spitzkbd SWB", spitzkbd);
- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
+ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"Spitzkbd HP", spitzkbd);
+ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
+ "Spitzkbd HP Type", spitzkbd);
return 0;
@@ -454,6 +476,7 @@ static int spitzkbd_remove(struct platfo
free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
del_timer_sync(&spitzkbd->htimer);
Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl.h
+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
#define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
-/* MAX1111 Channel Definitions */
-#define MAX1111_BATT_VOLT 4u
-#define MAX1111_BATT_TEMP 2u
-#define MAX1111_ACIN_VOLT 6u
-
extern struct battery_thresh spitz_battery_levels_acin[];
extern struct battery_thresh spitz_battery_levels_noac[];
void sharpsl_pm_pxa_init(void);
void sharpsl_pm_pxa_remove(void);
-int sharpsl_pm_pxa_read_max1111(int channel);
+
Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl_pm.c
+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
| MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
}
+EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
+
void sharpsl_pm_pxa_init(void)
{
pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
Index: linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
===================================================================
--- linux-2.6.20.orig/include/asm-arm/hardware/sharpsl_pm.h
+++ linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+/* MAX1111 Channel Definitions */
+#define MAX1111_REMCOM 0u
+#define MAX1111_BATT_VOLT 4u
+#define MAX1111_BATT_TEMP 2u
+#define MAX1111_ACIN_VOLT 6u
+
+int sharpsl_pm_pxa_read_max1111(int channel);
Index: linux-2.6.20/include/linux/input.h
===================================================================
--- linux-2.6.20.orig/include/linux/input.h
+++ linux-2.6.20/include/linux/input.h
@@ -602,6 +602,7 @@ struct input_absinfo {
#define SW_LID 0x00 /* set = lid shut */
#define SW_TABLET_MODE 0x01 /* set = tablet mode */
#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
+#define SW_REMOTE_INSERT 0x04 /* set = remote */
#define SW_MAX 0x0f
/*
Index: linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
===================================================================
--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz_pm.c
+++ linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
@@ -161,6 +161,13 @@ static int spitz_should_wakeup(unsigned
if (resume_on_alarm && (PEDR & PWER_RTC))
is_resume |= PWER_RTC;
+ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
+
+ //remote/headphone interrupt, wakeup
+ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
+ is_resume |= PWER_RTC;
+ }
+
dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
return is_resume;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

View File

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

View File

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

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

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

@@ -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

View File

@@ -1,125 +0,0 @@
require linux-rp.inc
PR = "r37"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 \
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.15-rc1.bz2;patch=1 \
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.15-rc2-git1.bz2;patch=1 \
# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \
# ${KERNELORG_MIRROR}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 = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \
${RPSRC}/poodle_partsize-r0.patch;patch=1;status=merged \
${RPSRC}/jffs2_longfilename-r1.patch;patch=1;status=merged \
${RPSRC}/locomo_led_default_trigger-r0.patch;patch=1;status=merged \
${RPSRC}/zaurus_reboot-r3.patch;patch=1;status=merged \
${RPSRC}/poodle_mmcsd_fix-r0.patch;patch=1;status=merged \
${RPSRC}/poodle_ssp-r1.patch;patch=1;status=merged \
${RPSRC}/sharpsl_pm-do-r2.patch;patch=1;status=merged \
${RPSRC}/zlib_inflate-r3.patch;patch=1;status=merged \
${RPSRC}/logo_rotate_fix-r1.patch;patch=1;status=merged \
${RPSRC}/collie_frontlight-r6.patch;patch=1;status=merged \
${RPSRC}/input_modalias_fix-r0.patch;patch=1;status=merged \
${RPSRC}/spectrumcs_fix-r0.patch;patch=1 \
file://00-hostap.patch;patch=1;status=merged \
file://10-pcnet.patch;patch=1;status=merged \
file://asoc-v0.12.4_2.6.17.patch;patch=1 \
${RPSRC}/hx2750_base-r27.patch;patch=1 \
${RPSRC}/hx2750_bl-r7.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
${RPSRC}/pxa_keys-r5.patch;patch=1 \
${RPSRC}/tsc2101-r12.patch;patch=1 \
${RPSRC}/hx2750_test1-r4.patch;patch=1 \
${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
${RPSRC}/input_power-r5.patch;patch=1 \
${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \
${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
${RPSRC}/pm_changes-r1.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
${RPSRC}/kexec-arm-r3a.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r3.patch;patch=1 \
${RPSRC}/pxafb_changeres-r0.patch;patch=1 \
${RPSRC}/poodle_audio-r7.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r2.patch;patch=1 \
${RPSRC}/w100_extaccel-r0.patch;patch=1 \
${RPSRC}/xscale_cache_workaround-r1.patch;patch=1 \
file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
file://hrw-pcmcia-ids-r5.patch;patch=1 \
${RPSRC}/logo_oh-r0.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 \
file://add-oz-release-string.patch;patch=1;status=unmergable \
${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
${RPSRC}/mmcsd_no_scr_check-r0.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 \
file://pxa-serial-hack.patch;patch=1;status=hack \
file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
file://orinoco-remove-all-which-are-in-hostap-HACK.patch;patch=1;status=unmergable-hack \
file://squashfs3.0-2.6.15.patch;patch=1;status=external \
file://vesafb-tng-1.0-rc2-git-20060629.patch;patch=1;status=external \
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-tosa "
# 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 \
# http://tglx.de/projects/armirq/2.6.17-rc3/patch-2.6.17-rc3-armirq4.patch;patch=1 \
# ${RPSRC}/../pxa27x_overlay-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 \
${DOSRC}/collie/collie-mcp-r0.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 \
${DOSRC}/temp/tmio-tc6393-r6.patch;patch=1 \
${CHSRC}/tmio-nand-r5.patch;patch=1 \
${DOSRC}/temp/tmio-ohci-r4.patch;patch=1 \
${CHSRC}/tmio-fb-r6.patch;patch=1 \
${DOSRC}/tosa-keyboard-r17.patch;patch=1 \
${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
${DOSRC}/tosa-tmio-r6.patch;patch=1 \
${DOSRC}/tosa-power-r17.patch;patch=1 \
${DOSRC}/tosa-tmio-lcd-r8.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 \
${DOSRC}/sharpsl-pm-postresume-r0.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-r0.patch;patch=1 \
file://wm97xx-lcdnoise-r0.patch;patch=1 "
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
S = "${WORKDIR}/linux-2.6.17"

View File

@@ -1,120 +0,0 @@
require linux-rp.inc
PR = "r20"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
# ${KERNELORG_MIRROR}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 = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
${KERNELORG_MIRROR}pub/linux/kernel/v2.6/patch-2.6.20.6.bz2;patch=1 \
http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.13.3.patch;patch=1;status=merged \
${RPSRC}/oprofile_always_bt_arm-r0.patch;patch=1 \
${RPSRC}/lzo_kernel-r0.patch;patch=1 \
${RPSRC}/lzo_jffs2-r0.patch;patch=1 \
${RPSRC}/lzo_crypto-r0a.patch;patch=1 \
${RPSRC}/lzo_jffs2_lzomode-r0.patch;patch=1 \
${RPSRC}/lzo_jffs2_sysfs-r0.patch;patch=1 \
${RPSRC}/hx2750_base-r28.patch;patch=1 \
${RPSRC}/hx2750_bl-r8.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
${RPSRC}/pxa_keys-r7.patch;patch=1 \
${RPSRC}/tsc2101-r16.patch;patch=1 \
${RPSRC}/hx2750_test1-r6.patch;patch=1 \
${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
${RPSRC}/input_power-r6.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-r3.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r3.patch;patch=1 \
${RPSRC}/kexec-arm-r4a.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r3.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
${RPSRC}/w100_extaccel-r0.patch;patch=1 \
${RPSRC}/w100_extmem-r0.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-r0.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-r0.patch;patch=1;status=hack \
${RPSRC}/mmcsd_no_scr_check-r0.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 \
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://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
file://sharpsl-rc-r1.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-tosa "
# 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 = "\
${TKSRC}/mtd-sharp-flash-hack-r2.patch;patch=1 \
${TKSRC}/ucb1x00-touch-audio-r1.patch;patch=1 \
${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
${TKSRC}/sa1100-udc-r2.patch;patch=1 \
${TKSRC}/mmc_spi-r4.patch;patch=1 \
${TKSRC}/locomo-r0.patch;patch=1 \
${TKSRC}/collie-kexec.patch;patch=1 \
${TKSRC}/locomo_spi-r3.patch;patch=1 \
${TKSRC}/sharpsl_pm.patch;patch=1 \
${TKSRC}/collie_pm-2.patch;patch=1 \
${TKSRC}/locomokeyb_suspendkey.patch;patch=1 \
${TKSRC}/pcmcia_suspend.patch;patch=1 \
${TKSRC}/ucb1x00_suspend.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 "
S = "${WORKDIR}/linux-2.6.20"

View File

@@ -1,118 +0,0 @@
require linux-rp.inc
PR = "r10"
DEFAULT_PREFERENCE_collie = "1"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
# ${KERNELORG_MIRROR}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 = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2 \
${RPSRC}/lzo_kernel-r0.patch;patch=1 \
${RPSRC}/lzo_jffs2-r0.patch;patch=1 \
${RPSRC}/lzo_crypto-r1.patch;patch=1 \
${RPSRC}/lzo_jffs2_lzomode-r0.patch;patch=1 \
${RPSRC}/lzo_jffs2_sysfs-r0.patch;patch=1 \
${RPSRC}/hx2750_base-r28.patch;patch=1 \
${RPSRC}/hx2750_bl-r9.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
${RPSRC}/pxa_keys-r7.patch;patch=1 \
${RPSRC}/tsc2101-r16.patch;patch=1 \
${RPSRC}/hx2750_test1-r6.patch;patch=1 \
${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
${RPSRC}/input_power-r7.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-r3.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r4.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r4.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
${RPSRC}/w100_extaccel-r0.patch;patch=1 \
${RPSRC}/asoc_fix_typo-r0.patch;patch=1 \
${RPSRC}/qemuarm_scsi_fix-r0.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-r0.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-r0.patch;patch=1;status=hack \
${RPSRC}/mmcsd_no_scr_check-r0.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 \
file://pxa-serial-hack.patch;patch=1;status=hack \
file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
file://connectplus-prevent-oops-HACK.patch;patch=1;status=hack \
file://squashfs3.0-2.6.15.patch;patch=1;status=external \
file://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
file://sharpsl-rc-r1.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-tosa "
# 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
SRC_URI_append_collie = "\
${TKSRC}/mtd-sharp-flash-hack-r2.patch;patch=1 \
${TKSRC}/ucb1x00-touch-audio-r1.patch;patch=1 \
${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
${TKSRC}/sa1100-udc-r2.patch;patch=1 \
${TKSRC}/mmc_spi-r4.patch;patch=1 \
${TKSRC}/locomo-r0.patch;patch=1 \
${TKSRC}/collie-kexec.patch;patch=1 \
${TKSRC}/locomo_spi-r4.patch;patch=1 \
${TKSRC}/sharpsl_pm-r2.patch;patch=1 \
${TKSRC}/collie_pm-r2.patch;patch=1 \
${TKSRC}/locomokeyb_suspendkey-2.patch;patch=1 \
${TKSRC}/pcmcia_suspend.patch;patch=1 \
${TKSRC}/ucb1x00_suspend.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 "
S = "${WORKDIR}/linux-2.6.21"

View File

@@ -1,115 +0,0 @@
require linux-rp.inc
PR = "r11"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
# ${KERNELORG_MIRROR}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 = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2 \
${RPSRC}/lzo_kernel-r3.patch;patch=1 \
${RPSRC}/lzo_jffs2-r2.patch;patch=1 \
${RPSRC}/lzo_crypto-r2.patch;patch=1 \
${RPSRC}/lzo_jffs2_lzomode-r1.patch;patch=1 \
${RPSRC}/lzo_jffs2_sysfs-r1.patch;patch=1 \
${RPSRC}/lzo_fix-r0.patch;patch=1 \
${RPSRC}/hx2750_base-r28.patch;patch=1 \
${RPSRC}/hx2750_bl-r9.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
${RPSRC}/pxa_keys-r7.patch;patch=1 \
${RPSRC}/tsc2101-r16.patch;patch=1 \
${RPSRC}/hx2750_test1-r6.patch;patch=1 \
${RPSRC}/pxa_timerfix-r0.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-r3.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r5.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r4.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r5.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-r0.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}/mmcsd_no_scr_check-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 \
file://htcuni.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://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
file://pda-power.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-tosa "
# 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"
S = "${WORKDIR}/linux-2.6.22"