aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/processor_thermal.c4
-rw-r--r--drivers/acpi/utilities/utmisc.c18
-rw-r--r--drivers/char/Kconfig4
-rw-r--r--drivers/char/drm/radeon_cp.c6
-rw-r--r--drivers/char/keyboard.c10
-rw-r--r--drivers/char/vc_screen.c2
-rw-r--r--drivers/fc4/Kconfig8
-rw-r--r--drivers/input/misc/Kconfig2
-rw-r--r--drivers/input/mouse/sermouse.c2
-rw-r--r--drivers/input/serio/i8042.h2
-rw-r--r--drivers/media/video/saa7127.c6
-rw-r--r--drivers/media/video/saa7134/Kconfig26
-rw-r--r--drivers/media/video/saa7134/Makefile7
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c13
-rw-r--r--drivers/media/video/saa7134/saa7134-oss.c15
-rw-r--r--drivers/mtd/maps/Kconfig2
-rw-r--r--drivers/net/forcedeth.c15
-rw-r--r--drivers/net/phy/phy_device.c4
-rw-r--r--drivers/net/ppp_generic.c3
-rw-r--r--drivers/net/sungem.c4
-rw-r--r--drivers/net/tg3.c13
-rw-r--r--drivers/net/tg3.h7
-rw-r--r--drivers/net/wireless/orinoco_nortel.c6
-rw-r--r--drivers/s390/net/qeth_eddp.c3
-rw-r--r--drivers/s390/net/qeth_main.c61
-rw-r--r--drivers/s390/net/qeth_mpc.c2
-rw-r--r--drivers/s390/net/qeth_mpc.h4
-rw-r--r--drivers/s390/net/qeth_proc.c250
-rw-r--r--drivers/s390/net/qeth_sys.c6
-rw-r--r--drivers/s390/net/qeth_tso.h4
-rw-r--r--drivers/scsi/libata-scsi.c5
-rw-r--r--drivers/scsi/scsi_scan.c3
-rw-r--r--drivers/serial/Kconfig10
-rw-r--r--drivers/serial/amba-pl011.c2
-rw-r--r--drivers/usb/input/aiptek.c2
-rw-r--r--drivers/video/Kconfig10
-rw-r--r--drivers/video/console/Kconfig20
-rw-r--r--drivers/video/logo/Kconfig2
-rw-r--r--drivers/video/sbuslib.c3
39 files changed, 217 insertions, 349 deletions
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
index f3758401532..dc9817cfb88 100644
--- a/drivers/acpi/processor_thermal.c
+++ b/drivers/acpi/processor_thermal.c
@@ -102,8 +102,8 @@ static int cpu_has_cpufreq(unsigned int cpu)
102{ 102{
103 struct cpufreq_policy policy; 103 struct cpufreq_policy policy;
104 if (!acpi_thermal_cpufreq_is_init || cpufreq_get_policy(&policy, cpu)) 104 if (!acpi_thermal_cpufreq_is_init || cpufreq_get_policy(&policy, cpu))
105 return -ENODEV; 105 return 0;
106 return 0; 106 return 1;
107} 107}
108 108
109static int acpi_thermal_cpufreq_increase(unsigned int cpu) 109static int acpi_thermal_cpufreq_increase(unsigned int cpu)
diff --git a/drivers/acpi/utilities/utmisc.c b/drivers/acpi/utilities/utmisc.c
index 0c5abc536c7..2ce872d7589 100644
--- a/drivers/acpi/utilities/utmisc.c
+++ b/drivers/acpi/utilities/utmisc.c
@@ -84,14 +84,14 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
84 84
85 /* Find a free owner ID */ 85 /* Find a free owner ID */
86 86
87 for (i = 0; i < 32; i++) { 87 for (i = 0; i < 64; i++) {
88 if (!(acpi_gbl_owner_id_mask & (1 << i))) { 88 if (!(acpi_gbl_owner_id_mask & (1ULL << i))) {
89 ACPI_DEBUG_PRINT((ACPI_DB_VALUES, 89 ACPI_DEBUG_PRINT((ACPI_DB_VALUES,
90 "Current owner_id mask: %8.8X New ID: %2.2X\n", 90 "Current owner_id mask: %16.16LX New ID: %2.2X\n",
91 acpi_gbl_owner_id_mask, 91 acpi_gbl_owner_id_mask,
92 (unsigned int)(i + 1))); 92 (unsigned int)(i + 1)));
93 93
94 acpi_gbl_owner_id_mask |= (1 << i); 94 acpi_gbl_owner_id_mask |= (1ULL << i);
95 *owner_id = (acpi_owner_id) (i + 1); 95 *owner_id = (acpi_owner_id) (i + 1);
96 goto exit; 96 goto exit;
97 } 97 }
@@ -106,7 +106,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
106 */ 106 */
107 *owner_id = 0; 107 *owner_id = 0;
108 status = AE_OWNER_ID_LIMIT; 108 status = AE_OWNER_ID_LIMIT;
109 ACPI_REPORT_ERROR(("Could not allocate new owner_id (32 max), AE_OWNER_ID_LIMIT\n")); 109 ACPI_REPORT_ERROR(("Could not allocate new owner_id (64 max), AE_OWNER_ID_LIMIT\n"));
110 110
111 exit: 111 exit:
112 (void)acpi_ut_release_mutex(ACPI_MTX_CACHES); 112 (void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
@@ -123,7 +123,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
123 * control method or unloading a table. Either way, we would 123 * control method or unloading a table. Either way, we would
124 * ignore any error anyway. 124 * ignore any error anyway.
125 * 125 *
126 * DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 32 126 * DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 64
127 * 127 *
128 ******************************************************************************/ 128 ******************************************************************************/
129 129
@@ -140,7 +140,7 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr)
140 140
141 /* Zero is not a valid owner_iD */ 141 /* Zero is not a valid owner_iD */
142 142
143 if ((owner_id == 0) || (owner_id > 32)) { 143 if ((owner_id == 0) || (owner_id > 64)) {
144 ACPI_REPORT_ERROR(("Invalid owner_id: %2.2X\n", owner_id)); 144 ACPI_REPORT_ERROR(("Invalid owner_id: %2.2X\n", owner_id));
145 return_VOID; 145 return_VOID;
146 } 146 }
@@ -158,8 +158,8 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr)
158 158
159 /* Free the owner ID only if it is valid */ 159 /* Free the owner ID only if it is valid */
160 160
161 if (acpi_gbl_owner_id_mask & (1 << owner_id)) { 161 if (acpi_gbl_owner_id_mask & (1ULL << owner_id)) {
162 acpi_gbl_owner_id_mask ^= (1 << owner_id); 162 acpi_gbl_owner_id_mask ^= (1ULL << owner_id);
163 } 163 }
164 164
165 (void)acpi_ut_release_mutex(ACPI_MTX_CACHES); 165 (void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index 696f72787fe..84e68cdd451 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -687,7 +687,7 @@ config NVRAM
687 687
688config RTC 688config RTC
689 tristate "Enhanced Real Time Clock Support" 689 tristate "Enhanced Real Time Clock Support"
690 depends on !PPC32 && !PARISC && !IA64 && !M68K && (!(SPARC32 || SPARC64) || PCI) 690 depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI)
691 ---help--- 691 ---help---
692 If you say Y here and create a character special file /dev/rtc with 692 If you say Y here and create a character special file /dev/rtc with
693 major number 10 and minor number 135 using mknod ("man mknod"), you 693 major number 10 and minor number 135 using mknod ("man mknod"), you
@@ -735,7 +735,7 @@ config SGI_IP27_RTC
735 735
736config GEN_RTC 736config GEN_RTC
737 tristate "Generic /dev/rtc emulation" 737 tristate "Generic /dev/rtc emulation"
738 depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC32 && !SPARC64 738 depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC
739 ---help--- 739 ---help---
740 If you say Y here and create a character special file /dev/rtc with 740 If you say Y here and create a character special file /dev/rtc with
741 major number 10 and minor number 135 using mknod ("man mknod"), you 741 major number 10 and minor number 135 using mknod ("man mknod"), you
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c
index 501e557cbc8..b517ae51580 100644
--- a/drivers/char/drm/radeon_cp.c
+++ b/drivers/char/drm/radeon_cp.c
@@ -1312,7 +1312,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
1312static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) 1312static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
1313{ 1313{
1314 drm_radeon_private_t *dev_priv = dev->dev_private; 1314 drm_radeon_private_t *dev_priv = dev->dev_private;
1315 unsigned int mem_size; 1315 unsigned int mem_size, aper_size;
1316 1316
1317 DRM_DEBUG("\n"); 1317 DRM_DEBUG("\n");
1318 1318
@@ -1527,7 +1527,9 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
1527 mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE); 1527 mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE);
1528 if (mem_size == 0) 1528 if (mem_size == 0)
1529 mem_size = 0x800000; 1529 mem_size = 0x800000;
1530 dev_priv->gart_vm_start = dev_priv->fb_location + mem_size; 1530 aper_size = max(RADEON_READ(RADEON_CONFIG_APER_SIZE), mem_size);
1531
1532 dev_priv->gart_vm_start = dev_priv->fb_location + aper_size;
1531 1533
1532#if __OS_HAS_AGP 1534#if __OS_HAS_AGP
1533 if (!dev_priv->is_pci) 1535 if (!dev_priv->is_pci)
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 449d029ad4f..8b603b2d1c4 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -930,8 +930,8 @@ static void kbd_refresh_leds(struct input_handle *handle)
930} 930}
931 931
932#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) ||\ 932#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) ||\
933 defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC32) ||\ 933 defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) ||\
934 defined(CONFIG_SPARC64) || defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\ 934 defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\
935 (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC)) 935 (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC))
936 936
937#define HW_RAW(dev) (test_bit(EV_MSC, dev->evbit) && test_bit(MSC_RAW, dev->mscbit) &&\ 937#define HW_RAW(dev) (test_bit(EV_MSC, dev->evbit) && test_bit(MSC_RAW, dev->mscbit) &&\
@@ -958,7 +958,7 @@ static unsigned short x86_keycodes[256] =
958extern int mac_hid_mouse_emulate_buttons(int, int, int); 958extern int mac_hid_mouse_emulate_buttons(int, int, int);
959#endif /* CONFIG_MAC_EMUMOUSEBTN */ 959#endif /* CONFIG_MAC_EMUMOUSEBTN */
960 960
961#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64) 961#ifdef CONFIG_SPARC
962static int sparc_l1_a_state = 0; 962static int sparc_l1_a_state = 0;
963extern void sun_do_break(void); 963extern void sun_do_break(void);
964#endif 964#endif
@@ -1045,7 +1045,7 @@ static void kbd_keycode(unsigned int keycode, int down,
1045 1045
1046 if (keycode == KEY_LEFTALT || keycode == KEY_RIGHTALT) 1046 if (keycode == KEY_LEFTALT || keycode == KEY_RIGHTALT)
1047 sysrq_alt = down; 1047 sysrq_alt = down;
1048#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64) 1048#ifdef CONFIG_SPARC
1049 if (keycode == KEY_STOP) 1049 if (keycode == KEY_STOP)
1050 sparc_l1_a_state = down; 1050 sparc_l1_a_state = down;
1051#endif 1051#endif
@@ -1072,7 +1072,7 @@ static void kbd_keycode(unsigned int keycode, int down,
1072 return; 1072 return;
1073 } 1073 }
1074#endif 1074#endif
1075#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64) 1075#ifdef CONFIG_SPARC
1076 if (keycode == KEY_A && sparc_l1_a_state) { 1076 if (keycode == KEY_A && sparc_l1_a_state) {
1077 sparc_l1_a_state = 0; 1077 sparc_l1_a_state = 0;
1078 sun_do_break(); 1078 sun_do_break();
diff --git a/drivers/char/vc_screen.c b/drivers/char/vc_screen.c
index f66c7ad6fd3..3c1dafaa344 100644
--- a/drivers/char/vc_screen.c
+++ b/drivers/char/vc_screen.c
@@ -419,7 +419,7 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
419 while (this_round > 1) { 419 while (this_round > 1) {
420 unsigned short w; 420 unsigned short w;
421 421
422 w = get_unaligned(((const unsigned short *)con_buf0)); 422 w = get_unaligned(((unsigned short *)con_buf0));
423 vcs_scr_writew(vc, w, org++); 423 vcs_scr_writew(vc, w, org++);
424 con_buf0 += 2; 424 con_buf0 += 2;
425 this_round -= 2; 425 this_round -= 2;
diff --git a/drivers/fc4/Kconfig b/drivers/fc4/Kconfig
index f00c02a13ed..345dbe6f10d 100644
--- a/drivers/fc4/Kconfig
+++ b/drivers/fc4/Kconfig
@@ -26,7 +26,7 @@ comment "FC4 drivers"
26 26
27config FC4_SOC 27config FC4_SOC
28 tristate "Sun SOC/Sbus" 28 tristate "Sun SOC/Sbus"
29 depends on FC4!=n && (SPARC32 || SPARC64) 29 depends on FC4!=n && SPARC
30 help 30 help
31 Serial Optical Channel is an interface card with one or two Fibre 31 Serial Optical Channel is an interface card with one or two Fibre
32 Optic ports, each of which can be connected to a disk array. Note 32 Optic ports, each of which can be connected to a disk array. Note
@@ -38,7 +38,7 @@ config FC4_SOC
38 38
39config FC4_SOCAL 39config FC4_SOCAL
40 tristate "Sun SOC+ (aka SOCAL)" 40 tristate "Sun SOC+ (aka SOCAL)"
41 depends on FC4!=n && (SPARC32 || SPARC64) 41 depends on FC4!=n && SPARC
42 ---help--- 42 ---help---
43 Serial Optical Channel Plus is an interface card with up to two 43 Serial Optical Channel Plus is an interface card with up to two
44 Fibre Optic ports. This card supports FC Arbitrated Loop (usually 44 Fibre Optic ports. This card supports FC Arbitrated Loop (usually
@@ -62,7 +62,7 @@ config SCSI_PLUTO
62 be called pluto. 62 be called pluto.
63 63
64config SCSI_FCAL 64config SCSI_FCAL
65 tristate "Sun Enterprise Network Array (A5000 and EX500)" if SPARC32 || SPARC64 65 tristate "Sun Enterprise Network Array (A5000 and EX500)" if SPARC
66 depends on FC4!=n && SCSI 66 depends on FC4!=n && SCSI
67 help 67 help
68 This driver drives FC-AL disks connected through a Fibre Channel 68 This driver drives FC-AL disks connected through a Fibre Channel
@@ -75,7 +75,7 @@ config SCSI_FCAL
75 75
76config SCSI_FCAL 76config SCSI_FCAL
77 prompt "Generic FC-AL disk driver" 77 prompt "Generic FC-AL disk driver"
78 depends on FC4!=n && SCSI && !SPARC32 && !SPARC64 78 depends on FC4!=n && SCSI && !SPARC
79 79
80endmenu 80endmenu
81 81
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 07813fc0523..e08dbe08f46 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -26,7 +26,7 @@ config INPUT_PCSPKR
26 26
27config INPUT_SPARCSPKR 27config INPUT_SPARCSPKR
28 tristate "SPARC Speaker support" 28 tristate "SPARC Speaker support"
29 depends on PCI && (SPARC32 || SPARC64) 29 depends on PCI && SPARC
30 help 30 help
31 Say Y here if you want the standard Speaker on Sparc PCI systems 31 Say Y here if you want the standard Speaker on Sparc PCI systems
32 to be used for bells and whistles. 32 to be used for bells and whistles.
diff --git a/drivers/input/mouse/sermouse.c b/drivers/input/mouse/sermouse.c
index 4bf584364d2..2f9a04ae725 100644
--- a/drivers/input/mouse/sermouse.c
+++ b/drivers/input/mouse/sermouse.c
@@ -95,7 +95,7 @@ static void sermouse_process_msc(struct sermouse *sermouse, signed char data, st
95 95
96 input_sync(dev); 96 input_sync(dev);
97 97
98 if (++sermouse->count == (5 - ((sermouse->type == SERIO_SUN) << 1))) 98 if (++sermouse->count == 5)
99 sermouse->count = 0; 99 sermouse->count = 0;
100} 100}
101 101
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index 13835039a2a..cbbf3842da5 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -21,7 +21,7 @@
21#include "i8042-ip22io.h" 21#include "i8042-ip22io.h"
22#elif defined(CONFIG_PPC) 22#elif defined(CONFIG_PPC)
23#include "i8042-ppcio.h" 23#include "i8042-ppcio.h"
24#elif defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64) 24#elif defined(CONFIG_SPARC)
25#include "i8042-sparcio.h" 25#include "i8042-sparcio.h"
26#elif defined(CONFIG_X86) || defined(CONFIG_IA64) 26#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
27#include "i8042-x86ia64io.h" 27#include "i8042-x86ia64io.h"
diff --git a/drivers/media/video/saa7127.c b/drivers/media/video/saa7127.c
index 3428e1ed003..c36f014f1fd 100644
--- a/drivers/media/video/saa7127.c
+++ b/drivers/media/video/saa7127.c
@@ -389,7 +389,7 @@ static int saa7127_set_vps(struct i2c_client *client, struct v4l2_sliced_vbi_dat
389static int saa7127_set_cc(struct i2c_client *client, struct v4l2_sliced_vbi_data *data) 389static int saa7127_set_cc(struct i2c_client *client, struct v4l2_sliced_vbi_data *data)
390{ 390{
391 struct saa7127_state *state = i2c_get_clientdata(client); 391 struct saa7127_state *state = i2c_get_clientdata(client);
392 u16 cc = data->data[0] << 8 | data->data[1]; 392 u16 cc = data->data[1] << 8 | data->data[0];
393 int enable = (data->line != 0); 393 int enable = (data->line != 0);
394 394
395 if (enable && (data->field != 0 || data->line != 21)) 395 if (enable && (data->field != 0 || data->line != 21))
@@ -397,7 +397,7 @@ static int saa7127_set_cc(struct i2c_client *client, struct v4l2_sliced_vbi_data
397 if (state->cc_enable != enable) { 397 if (state->cc_enable != enable) {
398 saa7127_dbg("Turn CC %s\n", enable ? "on" : "off"); 398 saa7127_dbg("Turn CC %s\n", enable ? "on" : "off");
399 saa7127_write(client, SAA7127_REG_CLOSED_CAPTION, 399 saa7127_write(client, SAA7127_REG_CLOSED_CAPTION,
400 (enable << 6) | 0x11); 400 (state->xds_enable << 7) | (enable << 6) | 0x11);
401 state->cc_enable = enable; 401 state->cc_enable = enable;
402 } 402 }
403 if (!enable) 403 if (!enable)
@@ -423,7 +423,7 @@ static int saa7127_set_xds(struct i2c_client *client, struct v4l2_sliced_vbi_dat
423 if (state->xds_enable != enable) { 423 if (state->xds_enable != enable) {
424 saa7127_dbg("Turn XDS %s\n", enable ? "on" : "off"); 424 saa7127_dbg("Turn XDS %s\n", enable ? "on" : "off");
425 saa7127_write(client, SAA7127_REG_CLOSED_CAPTION, 425 saa7127_write(client, SAA7127_REG_CLOSED_CAPTION,
426 (enable << 7) | 0x11); 426 (enable << 7) | (state->cc_enable << 6) | 0x11);
427 state->xds_enable = enable; 427 state->xds_enable = enable;
428 } 428 }
429 if (!enable) 429 if (!enable)
diff --git a/drivers/media/video/saa7134/Kconfig b/drivers/media/video/saa7134/Kconfig
index c512c4411b3..86e1bb391a4 100644
--- a/drivers/media/video/saa7134/Kconfig
+++ b/drivers/media/video/saa7134/Kconfig
@@ -1,11 +1,10 @@
1config VIDEO_SAA7134 1config VIDEO_SAA7134
2 tristate "Philips SAA7134 support" 2 tristate "Philips SAA7134 support"
3 depends on VIDEO_DEV && PCI && I2C && SOUND && SND 3 depends on VIDEO_DEV && PCI && I2C
4 select VIDEO_BUF 4 select VIDEO_BUF
5 select VIDEO_IR 5 select VIDEO_IR
6 select VIDEO_TUNER 6 select VIDEO_TUNER
7 select CRC32 7 select CRC32
8 select SND_PCM_OSS
9 ---help--- 8 ---help---
10 This is a video4linux driver for Philips SAA713x based 9 This is a video4linux driver for Philips SAA713x based
11 TV cards. 10 TV cards.
@@ -13,6 +12,29 @@ config VIDEO_SAA7134
13 To compile this driver as a module, choose M here: the 12 To compile this driver as a module, choose M here: the
14 module will be called saa7134. 13 module will be called saa7134.
15 14
15config VIDEO_SAA7134_ALSA
16 tristate "Philips SAA7134 DMA audio support"
17 depends on VIDEO_SAA7134 && SND
18 select SND_PCM_OSS
19 ---help---
20 This is a video4linux driver for direct (DMA) audio in
21 Philips SAA713x based TV cards using ALSA
22
23 To compile this driver as a module, choose M here: the
24 module will be called saa7134-alsa.
25
26config VIDEO_SAA7134_OSS
27 tristate "Philips SAA7134 DMA audio support (OSS, DEPRECATED)"
28 depends on VIDEO_SAA7134 && SOUND_PRIME && (!VIDEO_SAA7134_ALSA || (VIDEO_SAA7134_ALSA=m && m))
29 ---help---
30 This is a video4linux driver for direct (DMA) audio in
31 Philips SAA713x based TV cards using OSS
32
33 This is deprecated in favor of the ALSA module
34
35 To compile this driver as a module, choose M here: the
36 module will be called saa7134-oss.
37
16config VIDEO_SAA7134_DVB 38config VIDEO_SAA7134_DVB
17 tristate "DVB/ATSC Support for saa7134 based TV cards" 39 tristate "DVB/ATSC Support for saa7134 based TV cards"
18 depends on VIDEO_SAA7134 && DVB_CORE 40 depends on VIDEO_SAA7134 && DVB_CORE
diff --git a/drivers/media/video/saa7134/Makefile b/drivers/media/video/saa7134/Makefile
index 134f83a9621..1ba998424bb 100644
--- a/drivers/media/video/saa7134/Makefile
+++ b/drivers/media/video/saa7134/Makefile
@@ -4,8 +4,11 @@ saa7134-objs := saa7134-cards.o saa7134-core.o saa7134-i2c.o \
4 saa7134-video.o saa7134-input.o 4 saa7134-video.o saa7134-input.o
5 5
6obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o \ 6obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o \
7 saa6752hs.o saa7134-alsa.o \ 7 saa6752hs.o
8 saa7134-oss.o 8
9obj-$(CONFIG_VIDEO_SAA7134_ALSA) += saa7134-alsa.o
10obj-$(CONFIG_VIDEO_SAA7134_OSS) += saa7134-oss.o
11
9obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o 12obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o
10 13
11EXTRA_CFLAGS += -I$(src)/.. 14EXTRA_CFLAGS += -I$(src)/..
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index 6752dd1c1e8..ade05f75fdb 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -989,6 +989,14 @@ static int saa7134_alsa_init(void)
989 struct saa7134_dev *dev = NULL; 989 struct saa7134_dev *dev = NULL;
990 struct list_head *list; 990 struct list_head *list;
991 991
992 if (!dmasound_init && !dmasound_exit) {
993 dmasound_init = alsa_device_init;
994 dmasound_exit = alsa_device_exit;
995 } else {
996 printk(KERN_WARNING "saa7134 ALSA: can't load, DMA sound handler already assigned (probably to OSS)\n");
997 return -EBUSY;
998 }
999
992 printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n"); 1000 printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n");
993 1001
994 list_for_each(list,&saa7134_devlist) { 1002 list_for_each(list,&saa7134_devlist) {
@@ -1001,9 +1009,6 @@ static int saa7134_alsa_init(void)
1001 } 1009 }
1002 } 1010 }
1003 1011
1004 dmasound_init = alsa_device_init;
1005 dmasound_exit = alsa_device_exit;
1006
1007 if (dev == NULL) 1012 if (dev == NULL)
1008 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n"); 1013 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n");
1009 1014
@@ -1023,6 +1028,8 @@ static void saa7134_alsa_exit(void)
1023 snd_card_free(snd_saa7134_cards[idx]); 1028 snd_card_free(snd_saa7134_cards[idx]);
1024 } 1029 }
1025 1030
1031 dmasound_init = NULL;
1032 dmasound_exit = NULL;
1026 printk(KERN_INFO "saa7134 ALSA driver for DMA sound unloaded\n"); 1033 printk(KERN_INFO "saa7134 ALSA driver for DMA sound unloaded\n");
1027 1034
1028 return; 1035 return;
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c
index c450d57b294..8badd2a9cb2 100644
--- a/drivers/media/video/saa7134/saa7134-oss.c
+++ b/drivers/media/video/saa7134/saa7134-oss.c
@@ -959,8 +959,17 @@ static int saa7134_oss_init(void)
959 struct saa7134_dev *dev = NULL; 959 struct saa7134_dev *dev = NULL;
960 struct list_head *list; 960 struct list_head *list;
961 961
962 if (!dmasound_init && !dmasound_exit) {
963 dmasound_init = oss_device_init;
964 dmasound_exit = oss_device_exit;
965 } else {
966 printk(KERN_WARNING "saa7134 OSS: can't load, DMA sound handler already assigned (probably to ALSA)\n");
967 return -EBUSY;
968 }
969
962 printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n"); 970 printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n");
963 971
972
964 list_for_each(list,&saa7134_devlist) { 973 list_for_each(list,&saa7134_devlist) {
965 dev = list_entry(list, struct saa7134_dev, devlist); 974 dev = list_entry(list, struct saa7134_dev, devlist);
966 if (dev->dmasound.priv_data == NULL) { 975 if (dev->dmasound.priv_data == NULL) {
@@ -974,9 +983,6 @@ static int saa7134_oss_init(void)
974 if (dev == NULL) 983 if (dev == NULL)
975 printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n"); 984 printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n");
976 985
977 dmasound_init = oss_device_init;
978 dmasound_exit = oss_device_exit;
979
980 return 0; 986 return 0;
981 987
982} 988}
@@ -997,6 +1003,9 @@ static void saa7134_oss_exit(void)
997 1003
998 } 1004 }
999 1005
1006 dmasound_init = NULL;
1007 dmasound_exit = NULL;
1008
1000 printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n"); 1009 printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n");
1001 1010
1002 return; 1011 return;
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 452ccd5037c..b9b77cf39a1 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -62,7 +62,7 @@ config MTD_PHYSMAP_BANKWIDTH
62 62
63config MTD_SUN_UFLASH 63config MTD_SUN_UFLASH
64 tristate "Sun Microsystems userflash support" 64 tristate "Sun Microsystems userflash support"
65 depends on (SPARC32 || SPARC64) && MTD_CFI 65 depends on SPARC && MTD_CFI
66 help 66 help
67 This provides a 'mapping' driver which supports the way in 67 This provides a 'mapping' driver which supports the way in
68 which user-programmable flash chips are connected on various 68 which user-programmable flash chips are connected on various
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 525624fc03b..c39344adecc 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -10,7 +10,7 @@
10 * trademarks of NVIDIA Corporation in the United States and other 10 * trademarks of NVIDIA Corporation in the United States and other
11 * countries. 11 * countries.
12 * 12 *
13 * Copyright (C) 2003,4 Manfred Spraul 13 * Copyright (C) 2003,4,5 Manfred Spraul
14 * Copyright (C) 2004 Andrew de Quincey (wol support) 14 * Copyright (C) 2004 Andrew de Quincey (wol support)
15 * Copyright (C) 2004 Carl-Daniel Hailfinger (invalid MAC handling, insane 15 * Copyright (C) 2004 Carl-Daniel Hailfinger (invalid MAC handling, insane
16 * IRQ rate fixes, bigendian fixes, cleanups, verification) 16 * IRQ rate fixes, bigendian fixes, cleanups, verification)
@@ -100,6 +100,7 @@
100 * 0.45: 18 Sep 2005: Remove nv_stop/start_rx from every link check 100 * 0.45: 18 Sep 2005: Remove nv_stop/start_rx from every link check
101 * 0.46: 20 Oct 2005: Add irq optimization modes. 101 * 0.46: 20 Oct 2005: Add irq optimization modes.
102 * 0.47: 26 Oct 2005: Add phyaddr 0 in phy scan. 102 * 0.47: 26 Oct 2005: Add phyaddr 0 in phy scan.
103 * 0.48: 24 Dec 2005: Disable TSO, bugfix for pci_map_single
103 * 104 *
104 * Known bugs: 105 * Known bugs:
105 * We suspect that on some hardware no TX done interrupts are generated. 106 * We suspect that on some hardware no TX done interrupts are generated.
@@ -111,7 +112,7 @@
111 * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few 112 * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
112 * superfluous timer interrupts from the nic. 113 * superfluous timer interrupts from the nic.
113 */ 114 */
114#define FORCEDETH_VERSION "0.47" 115#define FORCEDETH_VERSION "0.48"
115#define DRV_NAME "forcedeth" 116#define DRV_NAME "forcedeth"
116 117
117#include <linux/module.h> 118#include <linux/module.h>
@@ -871,8 +872,8 @@ static int nv_alloc_rx(struct net_device *dev)
871 } else { 872 } else {
872 skb = np->rx_skbuff[nr]; 873 skb = np->rx_skbuff[nr];
873 } 874 }
874 np->rx_dma[nr] = pci_map_single(np->pci_dev, skb->data, skb->len, 875 np->rx_dma[nr] = pci_map_single(np->pci_dev, skb->data,
875 PCI_DMA_FROMDEVICE); 876 skb->end-skb->data, PCI_DMA_FROMDEVICE);
876 if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { 877 if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
877 np->rx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->rx_dma[nr]); 878 np->rx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->rx_dma[nr]);
878 wmb(); 879 wmb();
@@ -999,7 +1000,7 @@ static void nv_drain_rx(struct net_device *dev)
999 wmb(); 1000 wmb();
1000 if (np->rx_skbuff[i]) { 1001 if (np->rx_skbuff[i]) {
1001 pci_unmap_single(np->pci_dev, np->rx_dma[i], 1002 pci_unmap_single(np->pci_dev, np->rx_dma[i],
1002 np->rx_skbuff[i]->len, 1003 np->rx_skbuff[i]->end-np->rx_skbuff[i]->data,
1003 PCI_DMA_FROMDEVICE); 1004 PCI_DMA_FROMDEVICE);
1004 dev_kfree_skb(np->rx_skbuff[i]); 1005 dev_kfree_skb(np->rx_skbuff[i]);
1005 np->rx_skbuff[i] = NULL; 1006 np->rx_skbuff[i] = NULL;
@@ -1334,7 +1335,7 @@ static void nv_rx_process(struct net_device *dev)
1334 * the performance. 1335 * the performance.
1335 */ 1336 */
1336 pci_unmap_single(np->pci_dev, np->rx_dma[i], 1337 pci_unmap_single(np->pci_dev, np->rx_dma[i],
1337 np->rx_skbuff[i]->len, 1338 np->rx_skbuff[i]->end-np->rx_skbuff[i]->data,
1338 PCI_DMA_FROMDEVICE); 1339 PCI_DMA_FROMDEVICE);
1339 1340
1340 { 1341 {
@@ -2455,7 +2456,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2455 np->txrxctl_bits |= NVREG_TXRXCTL_RXCHECK; 2456 np->txrxctl_bits |= NVREG_TXRXCTL_RXCHECK;
2456 dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG; 2457 dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG;
2457#ifdef NETIF_F_TSO 2458#ifdef NETIF_F_TSO
2458 dev->features |= NETIF_F_TSO; 2459 /* disabled dev->features |= NETIF_F_TSO; */
2459#endif 2460#endif
2460 } 2461 }
2461 2462
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 16bebe7a7ce..7da0e3dd5fe 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -38,6 +38,10 @@
38#include <asm/irq.h> 38#include <asm/irq.h>
39#include <asm/uaccess.h> 39#include <asm/uaccess.h>
40 40
41MODULE_DESCRIPTION("PHY library");
42MODULE_AUTHOR("Andy Fleming");
43MODULE_LICENSE("GPL");
44
41static struct phy_driver genphy_driver; 45static struct phy_driver genphy_driver;
42extern int mdio_bus_init(void); 46extern int mdio_bus_init(void);
43extern void mdio_bus_exit(void); 47extern void mdio_bus_exit(void);
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index 50430f79f8c..1c6d328165b 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -524,9 +524,6 @@ static int get_filter(void __user *arg, struct sock_filter **p)
524 if (copy_from_user(&uprog, arg, sizeof(uprog))) 524 if (copy_from_user(&uprog, arg, sizeof(uprog)))
525 return -EFAULT; 525 return -EFAULT;
526 526
527 if (uprog.len > BPF_MAXINSNS)
528 return -EINVAL;
529
530 if (!uprog.len) { 527 if (!uprog.len) {
531 *p = NULL; 528 *p = NULL;
532 return 0; 529 return 0;
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index 081717d0137..28ce47a0240 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -2907,7 +2907,7 @@ static int __devinit gem_get_device_address(struct gem *gp)
2907 return 0; 2907 return 0;
2908} 2908}
2909 2909
2910static void __devexit gem_remove_one(struct pci_dev *pdev) 2910static void gem_remove_one(struct pci_dev *pdev)
2911{ 2911{
2912 struct net_device *dev = pci_get_drvdata(pdev); 2912 struct net_device *dev = pci_get_drvdata(pdev);
2913 2913
@@ -3181,7 +3181,7 @@ static struct pci_driver gem_driver = {
3181 .name = GEM_MODULE_NAME, 3181 .name = GEM_MODULE_NAME,
3182 .id_table = gem_pci_tbl, 3182 .id_table = gem_pci_tbl,
3183 .probe = gem_init_one, 3183 .probe = gem_init_one,
3184 .remove = __devexit_p(gem_remove_one), 3184 .remove = gem_remove_one,
3185#ifdef CONFIG_PM 3185#ifdef CONFIG_PM
3186 .suspend = gem_suspend, 3186 .suspend = gem_suspend,
3187 .resume = gem_resume, 3187 .resume = gem_resume,
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index cefb0c08a68..2fc9893d69e 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -68,8 +68,8 @@
68 68
69#define DRV_MODULE_NAME "tg3" 69#define DRV_MODULE_NAME "tg3"
70#define PFX DRV_MODULE_NAME ": " 70#define PFX DRV_MODULE_NAME ": "
71#define DRV_MODULE_VERSION "3.46" 71#define DRV_MODULE_VERSION "3.47"
72#define DRV_MODULE_RELDATE "Dec 19, 2005" 72#define DRV_MODULE_RELDATE "Dec 28, 2005"
73 73
74#define TG3_DEF_MAC_MODE 0 74#define TG3_DEF_MAC_MODE 0
75#define TG3_DEF_RX_MODE 0 75#define TG3_DEF_RX_MODE 0
@@ -7151,8 +7151,13 @@ do { p = (u32 *)(orig_p + (reg)); \
7151 GET_REG32_LOOP(BUFMGR_MODE, 0x58); 7151 GET_REG32_LOOP(BUFMGR_MODE, 0x58);
7152 GET_REG32_LOOP(RDMAC_MODE, 0x08); 7152 GET_REG32_LOOP(RDMAC_MODE, 0x08);
7153 GET_REG32_LOOP(WDMAC_MODE, 0x08); 7153 GET_REG32_LOOP(WDMAC_MODE, 0x08);
7154 GET_REG32_LOOP(RX_CPU_BASE, 0x280); 7154 GET_REG32_1(RX_CPU_MODE);
7155 GET_REG32_LOOP(TX_CPU_BASE, 0x280); 7155 GET_REG32_1(RX_CPU_STATE);
7156 GET_REG32_1(RX_CPU_PGMCTR);
7157 GET_REG32_1(RX_CPU_HWBKPT);
7158 GET_REG32_1(TX_CPU_MODE);
7159 GET_REG32_1(TX_CPU_STATE);
7160 GET_REG32_1(TX_CPU_PGMCTR);
7156 GET_REG32_LOOP(GRCMBOX_INTERRUPT_0, 0x110); 7161 GET_REG32_LOOP(GRCMBOX_INTERRUPT_0, 0x110);
7157 GET_REG32_LOOP(FTQ_RESET, 0x120); 7162 GET_REG32_LOOP(FTQ_RESET, 0x120);
7158 GET_REG32_LOOP(MSGINT_MODE, 0x0c); 7163 GET_REG32_LOOP(MSGINT_MODE, 0x0c);
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index 94dbcf3537e..890e1635996 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -1124,7 +1124,14 @@
1124/* 0x280 --> 0x400 unused */ 1124/* 0x280 --> 0x400 unused */
1125 1125
1126#define RX_CPU_BASE 0x00005000 1126#define RX_CPU_BASE 0x00005000
1127#define RX_CPU_MODE 0x00005000
1128#define RX_CPU_STATE 0x00005004
1129#define RX_CPU_PGMCTR 0x0000501c
1130#define RX_CPU_HWBKPT 0x00005034
1127#define TX_CPU_BASE 0x00005400 1131#define TX_CPU_BASE 0x00005400
1132#define TX_CPU_MODE 0x00005400
1133#define TX_CPU_STATE 0x00005404
1134#define TX_CPU_PGMCTR 0x0000541c
1128 1135
1129/* Mailboxes */ 1136/* Mailboxes */
1130#define GRCMBOX_INTERRUPT_0 0x00005800 /* 64-bit */ 1137#define GRCMBOX_INTERRUPT_0 0x00005800 /* 64-bit */
diff --git a/drivers/net/wireless/orinoco_nortel.c b/drivers/net/wireless/orinoco_nortel.c
index d8afd51ff8a..d1a670b3533 100644
--- a/drivers/net/wireless/orinoco_nortel.c
+++ b/drivers/net/wireless/orinoco_nortel.c
@@ -1,6 +1,8 @@
1/* orinoco_nortel.c 1/* orinoco_nortel.c
2 * 2 *
3 * Driver for Prism II devices which would usually be driven by orinoco_cs, 3 * Driver for Prism II devices which would usually be driven by orinoco_cs,
4 * but are connected to the PCI bus by a PCI-to-PCMCIA adapter used in
5 * Nortel emobility, Symbol LA-4113 and Symbol LA-4123.
4 * but are connected to the PCI bus by a Nortel PCI-PCMCIA-Adapter. 6 * but are connected to the PCI bus by a Nortel PCI-PCMCIA-Adapter.
5 * 7 *
6 * Copyright (C) 2002 Tobias Hoffmann 8 * Copyright (C) 2002 Tobias Hoffmann
@@ -165,7 +167,7 @@ static int nortel_pci_init_one(struct pci_dev *pdev,
165 goto fail_resources; 167 goto fail_resources;
166 } 168 }
167 169
168 iomem = pci_iomap(pdev, 3, 0); 170 iomem = pci_iomap(pdev, 2, 0);
169 if (!iomem) { 171 if (!iomem) {
170 err = -ENOMEM; 172 err = -ENOMEM;
171 goto fail_map_io; 173 goto fail_map_io;
@@ -265,6 +267,8 @@ static void __devexit nortel_pci_remove_one(struct pci_dev *pdev)
265static struct pci_device_id nortel_pci_id_table[] = { 267static struct pci_device_id nortel_pci_id_table[] = {
266 /* Nortel emobility PCI */ 268 /* Nortel emobility PCI */
267 {0x126c, 0x8030, PCI_ANY_ID, PCI_ANY_ID,}, 269 {0x126c, 0x8030, PCI_ANY_ID, PCI_ANY_ID,},
270 /* Symbol LA-4123 PCI */
271 {0x1562, 0x0001, PCI_ANY_ID, PCI_ANY_ID,},
268 {0,}, 272 {0,},
269}; 273};
270 274
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c
index 011915d5e24..f94f1f25eec 100644
--- a/drivers/s390/net/qeth_eddp.c
+++ b/drivers/s390/net/qeth_eddp.c
@@ -62,7 +62,8 @@ qeth_eddp_free_context(struct qeth_eddp_context *ctx)
62 for (i = 0; i < ctx->num_pages; ++i) 62 for (i = 0; i < ctx->num_pages; ++i)
63 free_page((unsigned long)ctx->pages[i]); 63 free_page((unsigned long)ctx->pages[i]);
64 kfree(ctx->pages); 64 kfree(ctx->pages);
65 kfree(ctx->elements); 65 if (ctx->elements != NULL)
66 kfree(ctx->elements);
66 kfree(ctx); 67 kfree(ctx);
67} 68}
68 69
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 99cceb242ec..f8f55cc468b 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/qeth_main.c ($Revision: 1.242 $) 3 * linux/drivers/s390/net/qeth_main.c ($Revision: 1.251 $)
4 * 4 *
5 * Linux on zSeries OSA Express and HiperSockets support 5 * Linux on zSeries OSA Express and HiperSockets support
6 * 6 *
@@ -12,7 +12,7 @@
12 * Frank Pavlic (fpavlic@de.ibm.com) and 12 * Frank Pavlic (fpavlic@de.ibm.com) and
13 * Thomas Spatzier <tspat@de.ibm.com> 13 * Thomas Spatzier <tspat@de.ibm.com>
14 * 14 *
15 * $Revision: 1.242 $ $Date: 2005/05/04 20:19:18 $ 15 * $Revision: 1.251 $ $Date: 2005/05/04 20:19:18 $
16 * 16 *
17 * This program is free software; you can redistribute it and/or modify 17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by 18 * it under the terms of the GNU General Public License as published by
@@ -72,7 +72,7 @@
72#include "qeth_eddp.h" 72#include "qeth_eddp.h"
73#include "qeth_tso.h" 73#include "qeth_tso.h"
74 74
75#define VERSION_QETH_C "$Revision: 1.242 $" 75#define VERSION_QETH_C "$Revision: 1.251 $"
76static const char *version = "qeth S/390 OSA-Express driver"; 76static const char *version = "qeth S/390 OSA-Express driver";
77 77
78/** 78/**
@@ -518,7 +518,8 @@ __qeth_set_offline(struct ccwgroup_device *cgdev, int recovery_mode)
518 518
519 QETH_DBF_TEXT(setup, 3, "setoffl"); 519 QETH_DBF_TEXT(setup, 3, "setoffl");
520 QETH_DBF_HEX(setup, 3, &card, sizeof(void *)); 520 QETH_DBF_HEX(setup, 3, &card, sizeof(void *));
521 521
522 netif_carrier_off(card->dev);
522 recover_flag = card->state; 523 recover_flag = card->state;
523 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){ 524 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){
524 PRINT_WARN("Stopping card %s interrupted by user!\n", 525 PRINT_WARN("Stopping card %s interrupted by user!\n",
@@ -1020,7 +1021,6 @@ void
1020qeth_schedule_recovery(struct qeth_card *card) 1021qeth_schedule_recovery(struct qeth_card *card)
1021{ 1022{
1022 QETH_DBF_TEXT(trace,2,"startrec"); 1023 QETH_DBF_TEXT(trace,2,"startrec");
1023
1024 if (qeth_set_thread_start_bit(card, QETH_RECOVER_THREAD) == 0) 1024 if (qeth_set_thread_start_bit(card, QETH_RECOVER_THREAD) == 0)
1025 schedule_work(&card->kernel_thread_starter); 1025 schedule_work(&card->kernel_thread_starter);
1026} 1026}
@@ -1710,7 +1710,6 @@ qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob)
1710 "IP address reset.\n", 1710 "IP address reset.\n",
1711 QETH_CARD_IFNAME(card), 1711 QETH_CARD_IFNAME(card),
1712 card->info.chpid); 1712 card->info.chpid);
1713 netif_carrier_on(card->dev);
1714 qeth_schedule_recovery(card); 1713 qeth_schedule_recovery(card);
1715 return NULL; 1714 return NULL;
1716 case IPA_CMD_MODCCID: 1715 case IPA_CMD_MODCCID:
@@ -1959,7 +1958,7 @@ qeth_osn_send_ipa_cmd(struct qeth_card *card, struct qeth_cmd_buffer *iob,
1959{ 1958{
1960 u16 s1, s2; 1959 u16 s1, s2;
1961 1960
1962QETH_DBF_TEXT(trace,4,"osndipa"); 1961 QETH_DBF_TEXT(trace,4,"osndipa");
1963 1962
1964 qeth_prepare_ipa_cmd(card, iob, QETH_PROT_OSN2); 1963 qeth_prepare_ipa_cmd(card, iob, QETH_PROT_OSN2);
1965 s1 = (u16)(IPA_PDU_HEADER_SIZE + data_len); 1964 s1 = (u16)(IPA_PDU_HEADER_SIZE + data_len);
@@ -2203,24 +2202,21 @@ qeth_ulp_setup(struct qeth_card *card)
2203} 2202}
2204 2203
2205static inline int 2204static inline int
2206qeth_check_for_inbound_error(struct qeth_qdio_buffer *buf, 2205qeth_check_qdio_errors(struct qdio_buffer *buf, unsigned int qdio_error,
2207 unsigned int qdio_error, 2206 unsigned int siga_error, const char *dbftext)
2208 unsigned int siga_error)
2209{ 2207{
2210 int rc = 0;
2211
2212 if (qdio_error || siga_error) { 2208 if (qdio_error || siga_error) {
2213 QETH_DBF_TEXT(trace, 2, "qdinerr"); 2209 QETH_DBF_TEXT(trace, 2, dbftext);
2214 QETH_DBF_TEXT(qerr, 2, "qdinerr"); 2210 QETH_DBF_TEXT(qerr, 2, dbftext);
2215 QETH_DBF_TEXT_(qerr, 2, " F15=%02X", 2211 QETH_DBF_TEXT_(qerr, 2, " F15=%02X",
2216 buf->buffer->element[15].flags & 0xff); 2212 buf->element[15].flags & 0xff);
2217 QETH_DBF_TEXT_(qerr, 2, " F14=%02X", 2213 QETH_DBF_TEXT_(qerr, 2, " F14=%02X",
2218 buf->buffer->element[14].flags & 0xff); 2214 buf->element[14].flags & 0xff);
2219 QETH_DBF_TEXT_(qerr, 2, " qerr=%X", qdio_error); 2215 QETH_DBF_TEXT_(qerr, 2, " qerr=%X", qdio_error);
2220 QETH_DBF_TEXT_(qerr, 2, " serr=%X", siga_error); 2216 QETH_DBF_TEXT_(qerr, 2, " serr=%X", siga_error);
2221 rc = 1; 2217 return 1;
2222 } 2218 }
2223 return rc; 2219 return 0;
2224} 2220}
2225 2221
2226static inline struct sk_buff * 2222static inline struct sk_buff *
@@ -2769,8 +2765,9 @@ qeth_qdio_input_handler(struct ccw_device * ccwdev, unsigned int status,
2769 for (i = first_element; i < (first_element + count); ++i) { 2765 for (i = first_element; i < (first_element + count); ++i) {
2770 index = i % QDIO_MAX_BUFFERS_PER_Q; 2766 index = i % QDIO_MAX_BUFFERS_PER_Q;
2771 buffer = &card->qdio.in_q->bufs[index]; 2767 buffer = &card->qdio.in_q->bufs[index];
2772 if (!((status == QDIO_STATUS_LOOK_FOR_ERROR) && 2768 if (!((status & QDIO_STATUS_LOOK_FOR_ERROR) &&
2773 qeth_check_for_inbound_error(buffer, qdio_err, siga_err))) 2769 qeth_check_qdio_errors(buffer->buffer,
2770 qdio_err, siga_err,"qinerr")))
2774 qeth_process_inbound_buffer(card, buffer, index); 2771 qeth_process_inbound_buffer(card, buffer, index);
2775 /* clear buffer and give back to hardware */ 2772 /* clear buffer and give back to hardware */
2776 qeth_put_buffer_pool_entry(card, buffer->pool_entry); 2773 qeth_put_buffer_pool_entry(card, buffer->pool_entry);
@@ -2785,12 +2782,13 @@ qeth_qdio_input_handler(struct ccw_device * ccwdev, unsigned int status,
2785static inline int 2782static inline int
2786qeth_handle_send_error(struct qeth_card *card, 2783qeth_handle_send_error(struct qeth_card *card,
2787 struct qeth_qdio_out_buffer *buffer, 2784 struct qeth_qdio_out_buffer *buffer,
2788 int qdio_err, int siga_err) 2785 unsigned int qdio_err, unsigned int siga_err)
2789{ 2786{
2790 int sbalf15 = buffer->buffer->element[15].flags & 0xff; 2787 int sbalf15 = buffer->buffer->element[15].flags & 0xff;
2791 int cc = siga_err & 3; 2788 int cc = siga_err & 3;
2792 2789
2793 QETH_DBF_TEXT(trace, 6, "hdsnderr"); 2790 QETH_DBF_TEXT(trace, 6, "hdsnderr");
2791 qeth_check_qdio_errors(buffer->buffer, qdio_err, siga_err, "qouterr");
2794 switch (cc) { 2792 switch (cc) {
2795 case 0: 2793 case 0:
2796 if (qdio_err){ 2794 if (qdio_err){
@@ -3047,7 +3045,8 @@ qeth_qdio_output_handler(struct ccw_device * ccwdev, unsigned int status,
3047 for(i = first_element; i < (first_element + count); ++i){ 3045 for(i = first_element; i < (first_element + count); ++i){
3048 buffer = &queue->bufs[i % QDIO_MAX_BUFFERS_PER_Q]; 3046 buffer = &queue->bufs[i % QDIO_MAX_BUFFERS_PER_Q];
3049 /*we only handle the KICK_IT error by doing a recovery */ 3047 /*we only handle the KICK_IT error by doing a recovery */
3050 if (qeth_handle_send_error(card, buffer, qdio_error, siga_error) 3048 if (qeth_handle_send_error(card, buffer,
3049 qdio_error, siga_error)
3051 == QETH_SEND_ERROR_KICK_IT){ 3050 == QETH_SEND_ERROR_KICK_IT){
3052 netif_stop_queue(card->dev); 3051 netif_stop_queue(card->dev);
3053 qeth_schedule_recovery(card); 3052 qeth_schedule_recovery(card);
@@ -3289,7 +3288,6 @@ qeth_init_qdio_info(struct qeth_card *card)
3289 card->qdio.in_buf_pool.buf_count = card->qdio.init_pool.buf_count; 3288 card->qdio.in_buf_pool.buf_count = card->qdio.init_pool.buf_count;
3290 INIT_LIST_HEAD(&card->qdio.in_buf_pool.entry_list); 3289 INIT_LIST_HEAD(&card->qdio.in_buf_pool.entry_list);
3291 INIT_LIST_HEAD(&card->qdio.init_pool.entry_list); 3290 INIT_LIST_HEAD(&card->qdio.init_pool.entry_list);
3292 /* outbound */
3293} 3291}
3294 3292
3295static int 3293static int
@@ -3731,6 +3729,9 @@ qeth_verify_vlan_dev(struct net_device *dev, struct qeth_card *card)
3731 break; 3729 break;
3732 } 3730 }
3733 } 3731 }
3732 if (rc && !(VLAN_DEV_INFO(dev)->real_dev->priv == (void *)card))
3733 return 0;
3734
3734#endif 3735#endif
3735 return rc; 3736 return rc;
3736} 3737}
@@ -3807,10 +3808,8 @@ qeth_open(struct net_device *dev)
3807 card->data.state = CH_STATE_UP; 3808 card->data.state = CH_STATE_UP;
3808 card->state = CARD_STATE_UP; 3809 card->state = CARD_STATE_UP;
3809 3810
3810 if (!card->lan_online){ 3811 if (!card->lan_online && netif_carrier_ok(dev))
3811 if (netif_carrier_ok(dev)) 3812 netif_carrier_off(dev);
3812 netif_carrier_off(dev);
3813 }
3814 return 0; 3813 return 0;
3815} 3814}
3816 3815
@@ -5870,10 +5869,8 @@ qeth_add_multicast_ipv6(struct qeth_card *card)
5870 struct inet6_dev *in6_dev; 5869 struct inet6_dev *in6_dev;
5871 5870
5872 QETH_DBF_TEXT(trace,4,"chkmcv6"); 5871 QETH_DBF_TEXT(trace,4,"chkmcv6");
5873 if ((card->options.layer2 == 0) && 5872 if (!qeth_is_supported(card, IPA_IPV6))
5874 (!qeth_is_supported(card, IPA_IPV6)) )
5875 return ; 5873 return ;
5876
5877 in6_dev = in6_dev_get(card->dev); 5874 in6_dev = in6_dev_get(card->dev);
5878 if (in6_dev == NULL) 5875 if (in6_dev == NULL)
5879 return; 5876 return;
@@ -7936,8 +7933,8 @@ __qeth_set_online(struct ccwgroup_device *gdev, int recovery_mode)
7936 QETH_DBF_TEXT_(setup, 2, "6err%d", rc); 7933 QETH_DBF_TEXT_(setup, 2, "6err%d", rc);
7937 goto out_remove; 7934 goto out_remove;
7938 } 7935 }
7939/*maybe it was set offline without ifconfig down 7936 netif_carrier_on(card->dev);
7940 * we can also use this state for recovery purposes*/ 7937
7941 qeth_set_allowed_threads(card, 0xffffffff, 0); 7938 qeth_set_allowed_threads(card, 0xffffffff, 0);
7942 if (recover_flag == CARD_STATE_RECOVER) 7939 if (recover_flag == CARD_STATE_RECOVER)
7943 qeth_start_again(card, recovery_mode); 7940 qeth_start_again(card, recovery_mode);
diff --git a/drivers/s390/net/qeth_mpc.c b/drivers/s390/net/qeth_mpc.c
index f0a080a9e51..5f8754addc1 100644
--- a/drivers/s390/net/qeth_mpc.c
+++ b/drivers/s390/net/qeth_mpc.c
@@ -11,7 +11,7 @@
11#include <asm/cio.h> 11#include <asm/cio.h>
12#include "qeth_mpc.h" 12#include "qeth_mpc.h"
13 13
14const char *VERSION_QETH_MPC_C = "$Revision: 1.12 $"; 14const char *VERSION_QETH_MPC_C = "$Revision: 1.13 $";
15 15
16unsigned char IDX_ACTIVATE_READ[]={ 16unsigned char IDX_ACTIVATE_READ[]={
17 0x00,0x00,0x80,0x00, 0x00,0x00,0x00,0x00, 17 0x00,0x00,0x80,0x00, 0x00,0x00,0x00,0x00,
diff --git a/drivers/s390/net/qeth_mpc.h b/drivers/s390/net/qeth_mpc.h
index 5f71486e708..864cec5f6c6 100644
--- a/drivers/s390/net/qeth_mpc.h
+++ b/drivers/s390/net/qeth_mpc.h
@@ -14,14 +14,14 @@
14 14
15#include <asm/qeth.h> 15#include <asm/qeth.h>
16 16
17#define VERSION_QETH_MPC_H "$Revision: 1.44 $" 17#define VERSION_QETH_MPC_H "$Revision: 1.46 $"
18 18
19extern const char *VERSION_QETH_MPC_C; 19extern const char *VERSION_QETH_MPC_C;
20 20
21#define IPA_PDU_HEADER_SIZE 0x40 21#define IPA_PDU_HEADER_SIZE 0x40
22#define QETH_IPA_PDU_LEN_TOTAL(buffer) (buffer+0x0e) 22#define QETH_IPA_PDU_LEN_TOTAL(buffer) (buffer+0x0e)
23#define QETH_IPA_PDU_LEN_PDU1(buffer) (buffer+0x26) 23#define QETH_IPA_PDU_LEN_PDU1(buffer) (buffer+0x26)
24#define QETH_IPA_PDU_LEN_PDU2(buffer) (buffer+0x2a) 24#define QETH_IPA_PDU_LEN_PDU2(buffer) (buffer+0x29)
25#define QETH_IPA_PDU_LEN_PDU3(buffer) (buffer+0x3a) 25#define QETH_IPA_PDU_LEN_PDU3(buffer) (buffer+0x3a)
26 26
27extern unsigned char IPA_PDU_HEADER[]; 27extern unsigned char IPA_PDU_HEADER[];
diff --git a/drivers/s390/net/qeth_proc.c b/drivers/s390/net/qeth_proc.c
index f2ccfea8fdb..7bf35098831 100644
--- a/drivers/s390/net/qeth_proc.c
+++ b/drivers/s390/net/qeth_proc.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/qeth_fs.c ($Revision: 1.13 $) 3 * linux/drivers/s390/net/qeth_fs.c ($Revision: 1.16 $)
4 * 4 *
5 * Linux on zSeries OSA Express and HiperSockets support 5 * Linux on zSeries OSA Express and HiperSockets support
6 * This file contains code related to procfs. 6 * This file contains code related to procfs.
@@ -21,7 +21,7 @@
21#include "qeth_mpc.h" 21#include "qeth_mpc.h"
22#include "qeth_fs.h" 22#include "qeth_fs.h"
23 23
24const char *VERSION_QETH_PROC_C = "$Revision: 1.13 $"; 24const char *VERSION_QETH_PROC_C = "$Revision: 1.16 $";
25 25
26/***** /proc/qeth *****/ 26/***** /proc/qeth *****/
27#define QETH_PROCFILE_NAME "qeth" 27#define QETH_PROCFILE_NAME "qeth"
@@ -30,30 +30,26 @@ static struct proc_dir_entry *qeth_procfile;
30static int 30static int
31qeth_procfile_seq_match(struct device *dev, void *data) 31qeth_procfile_seq_match(struct device *dev, void *data)
32{ 32{
33 return 1; 33 return(dev ? 1 : 0);
34} 34}
35 35
36static void * 36static void *
37qeth_procfile_seq_start(struct seq_file *s, loff_t *offset) 37qeth_procfile_seq_start(struct seq_file *s, loff_t *offset)
38{ 38{
39 struct device *dev; 39 struct device *dev = NULL;
40 loff_t nr; 40 loff_t nr = 0;
41 41
42 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem); 42 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
43 43 if (*offset == 0)
44 nr = *offset;
45 if (nr == 0)
46 return SEQ_START_TOKEN; 44 return SEQ_START_TOKEN;
47 45 while (1) {
48 dev = driver_find_device(&qeth_ccwgroup_driver.driver, NULL,
49 NULL, qeth_procfile_seq_match);
50
51 /* get card at pos *offset */
52 nr = *offset;
53 while (nr-- > 1 && dev)
54 dev = driver_find_device(&qeth_ccwgroup_driver.driver, dev, 46 dev = driver_find_device(&qeth_ccwgroup_driver.driver, dev,
55 NULL, qeth_procfile_seq_match); 47 NULL, qeth_procfile_seq_match);
56 return (void *) dev; 48 if (++nr == *offset)
49 break;
50 put_device(dev);
51 }
52 return dev;
57} 53}
58 54
59static void 55static void
@@ -66,19 +62,14 @@ static void *
66qeth_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset) 62qeth_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset)
67{ 63{
68 struct device *prev, *next; 64 struct device *prev, *next;
69 65
70 if (it == SEQ_START_TOKEN) { 66 if (it == SEQ_START_TOKEN)
71 next = driver_find_device(&qeth_ccwgroup_driver.driver, 67 prev = NULL;
72 NULL, NULL, qeth_procfile_seq_match); 68 else
73 if (next) 69 prev = (struct device *) it;
74 (*offset)++;
75 return (void *) next;
76 }
77 prev = (struct device *) it;
78 next = driver_find_device(&qeth_ccwgroup_driver.driver, 70 next = driver_find_device(&qeth_ccwgroup_driver.driver,
79 prev, NULL, qeth_procfile_seq_match); 71 prev, NULL, qeth_procfile_seq_match);
80 if (next) 72 (*offset)++;
81 (*offset)++;
82 return (void *) next; 73 return (void *) next;
83} 74}
84 75
@@ -87,7 +78,7 @@ qeth_get_router_str(struct qeth_card *card, int ipv)
87{ 78{
88 int routing_type = 0; 79 int routing_type = 0;
89 80
90 if (ipv == 4){ 81 if (ipv == 4) {
91 routing_type = card->options.route4.type; 82 routing_type = card->options.route4.type;
92 } else { 83 } else {
93#ifdef CONFIG_QETH_IPV6 84#ifdef CONFIG_QETH_IPV6
@@ -154,6 +145,7 @@ qeth_procfile_seq_show(struct seq_file *s, void *it)
154 card->qdio.in_buf_pool.buf_count); 145 card->qdio.in_buf_pool.buf_count);
155 else 146 else
156 seq_printf(s, " +++ LAN OFFLINE +++\n"); 147 seq_printf(s, " +++ LAN OFFLINE +++\n");
148 put_device(device);
157 } 149 }
158 return 0; 150 return 0;
159} 151}
@@ -184,51 +176,16 @@ static struct file_operations qeth_procfile_fops = {
184static struct proc_dir_entry *qeth_perf_procfile; 176static struct proc_dir_entry *qeth_perf_procfile;
185 177
186#ifdef CONFIG_QETH_PERF_STATS 178#ifdef CONFIG_QETH_PERF_STATS
187
188static void *
189qeth_perf_procfile_seq_start(struct seq_file *s, loff_t *offset)
190{
191 struct device *dev = NULL;
192 int nr;
193
194 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
195 /* get card at pos *offset */
196 dev = driver_find_device(&qeth_ccwgroup_driver.driver, NULL, NULL,
197 qeth_procfile_seq_match);
198
199 /* get card at pos *offset */
200 nr = *offset;
201 while (nr-- > 1 && dev)
202 dev = driver_find_device(&qeth_ccwgroup_driver.driver, dev,
203 NULL, qeth_procfile_seq_match);
204 return (void *) dev;
205}
206
207static void
208qeth_perf_procfile_seq_stop(struct seq_file *s, void* it)
209{
210 up_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
211}
212
213static void *
214qeth_perf_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset)
215{
216 struct device *prev, *next;
217
218 prev = (struct device *) it;
219 next = driver_find_device(&qeth_ccwgroup_driver.driver, prev,
220 NULL, qeth_procfile_seq_match);
221 if (next)
222 (*offset)++;
223 return (void *) next;
224}
225
226static int 179static int
227qeth_perf_procfile_seq_show(struct seq_file *s, void *it) 180qeth_perf_procfile_seq_show(struct seq_file *s, void *it)
228{ 181{
229 struct device *device; 182 struct device *device;
230 struct qeth_card *card; 183 struct qeth_card *card;
231 184
185
186 if (it == SEQ_START_TOKEN)
187 return 0;
188
232 device = (struct device *) it; 189 device = (struct device *) it;
233 card = device->driver_data; 190 card = device->driver_data;
234 seq_printf(s, "For card with devnos %s/%s/%s (%s):\n", 191 seq_printf(s, "For card with devnos %s/%s/%s (%s):\n",
@@ -295,13 +252,14 @@ qeth_perf_procfile_seq_show(struct seq_file *s, void *it)
295 card->perf_stats.outbound_do_qdio_time, 252 card->perf_stats.outbound_do_qdio_time,
296 card->perf_stats.outbound_do_qdio_cnt 253 card->perf_stats.outbound_do_qdio_cnt
297 ); 254 );
255 put_device(device);
298 return 0; 256 return 0;
299} 257}
300 258
301static struct seq_operations qeth_perf_procfile_seq_ops = { 259static struct seq_operations qeth_perf_procfile_seq_ops = {
302 .start = qeth_perf_procfile_seq_start, 260 .start = qeth_procfile_seq_start,
303 .stop = qeth_perf_procfile_seq_stop, 261 .stop = qeth_procfile_seq_stop,
304 .next = qeth_perf_procfile_seq_next, 262 .next = qeth_procfile_seq_next,
305 .show = qeth_perf_procfile_seq_show, 263 .show = qeth_perf_procfile_seq_show,
306}; 264};
307 265
@@ -324,93 +282,6 @@ static struct file_operations qeth_perf_procfile_fops = {
324#define qeth_perf_procfile_created 1 282#define qeth_perf_procfile_created 1
325#endif /* CONFIG_QETH_PERF_STATS */ 283#endif /* CONFIG_QETH_PERF_STATS */
326 284
327/***** /proc/qeth_ipa_takeover *****/
328#define QETH_IPATO_PROCFILE_NAME "qeth_ipa_takeover"
329static struct proc_dir_entry *qeth_ipato_procfile;
330
331static void *
332qeth_ipato_procfile_seq_start(struct seq_file *s, loff_t *offset)
333{
334 struct device *dev;
335 loff_t nr;
336
337 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
338 /* TODO: finish this */
339 /*
340 * maybe SEQ_SATRT_TOKEN can be returned for offset 0
341 * output driver settings then;
342 * else output setting for respective card
343 */
344
345 dev = driver_find_device(&qeth_ccwgroup_driver.driver, NULL, NULL,
346 qeth_procfile_seq_match);
347
348 /* get card at pos *offset */
349 nr = *offset;
350 while (nr-- > 1 && dev)
351 dev = driver_find_device(&qeth_ccwgroup_driver.driver, dev,
352 NULL, qeth_procfile_seq_match);
353 return (void *) dev;
354}
355
356static void
357qeth_ipato_procfile_seq_stop(struct seq_file *s, void* it)
358{
359 up_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
360}
361
362static void *
363qeth_ipato_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset)
364{
365 struct device *prev, *next;
366
367 prev = (struct device *) it;
368 next = driver_find_device(&qeth_ccwgroup_driver.driver, prev,
369 NULL, qeth_procfile_seq_match);
370 if (next)
371 (*offset)++;
372 return (void *) next;
373}
374
375static int
376qeth_ipato_procfile_seq_show(struct seq_file *s, void *it)
377{
378 struct device *device;
379 struct qeth_card *card;
380
381 /* TODO: finish this */
382 /*
383 * maybe SEQ_SATRT_TOKEN can be returned for offset 0
384 * output driver settings then;
385 * else output setting for respective card
386 */
387 device = (struct device *) it;
388 card = device->driver_data;
389
390 return 0;
391}
392
393static struct seq_operations qeth_ipato_procfile_seq_ops = {
394 .start = qeth_ipato_procfile_seq_start,
395 .stop = qeth_ipato_procfile_seq_stop,
396 .next = qeth_ipato_procfile_seq_next,
397 .show = qeth_ipato_procfile_seq_show,
398};
399
400static int
401qeth_ipato_procfile_open(struct inode *inode, struct file *file)
402{
403 return seq_open(file, &qeth_ipato_procfile_seq_ops);
404}
405
406static struct file_operations qeth_ipato_procfile_fops = {
407 .owner = THIS_MODULE,
408 .open = qeth_ipato_procfile_open,
409 .read = seq_read,
410 .llseek = seq_lseek,
411 .release = seq_release,
412};
413
414int __init 285int __init
415qeth_create_procfs_entries(void) 286qeth_create_procfs_entries(void)
416{ 287{
@@ -426,13 +297,7 @@ qeth_create_procfs_entries(void)
426 qeth_perf_procfile->proc_fops = &qeth_perf_procfile_fops; 297 qeth_perf_procfile->proc_fops = &qeth_perf_procfile_fops;
427#endif /* CONFIG_QETH_PERF_STATS */ 298#endif /* CONFIG_QETH_PERF_STATS */
428 299
429 qeth_ipato_procfile = create_proc_entry(QETH_IPATO_PROCFILE_NAME,
430 S_IFREG | 0444, NULL);
431 if (qeth_ipato_procfile)
432 qeth_ipato_procfile->proc_fops = &qeth_ipato_procfile_fops;
433
434 if (qeth_procfile && 300 if (qeth_procfile &&
435 qeth_ipato_procfile &&
436 qeth_perf_procfile_created) 301 qeth_perf_procfile_created)
437 return 0; 302 return 0;
438 else 303 else
@@ -446,62 +311,5 @@ qeth_remove_procfs_entries(void)
446 remove_proc_entry(QETH_PROCFILE_NAME, NULL); 311 remove_proc_entry(QETH_PROCFILE_NAME, NULL);
447 if (qeth_perf_procfile) 312 if (qeth_perf_procfile)
448 remove_proc_entry(QETH_PERF_PROCFILE_NAME, NULL); 313 remove_proc_entry(QETH_PERF_PROCFILE_NAME, NULL);
449 if (qeth_ipato_procfile)
450 remove_proc_entry(QETH_IPATO_PROCFILE_NAME, NULL);
451} 314}
452 315
453
454/* ONLY FOR DEVELOPMENT! -> make it as module */
455/*
456static void
457qeth_create_sysfs_entries(void)
458{
459 struct device *dev;
460
461 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
462
463 list_for_each_entry(dev, &qeth_ccwgroup_driver.driver.devices,
464 driver_list)
465 qeth_create_device_attributes(dev);
466
467 up_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
468}
469
470static void
471qeth_remove_sysfs_entries(void)
472{
473 struct device *dev;
474
475 down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
476
477 list_for_each_entry(dev, &qeth_ccwgroup_driver.driver.devices,
478 driver_list)
479 qeth_remove_device_attributes(dev);
480
481 up_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
482}
483
484static int __init
485qeth_fs_init(void)
486{
487 printk(KERN_INFO "qeth_fs_init\n");
488 qeth_create_procfs_entries();
489 qeth_create_sysfs_entries();
490
491 return 0;
492}
493
494static void __exit
495qeth_fs_exit(void)
496{
497 printk(KERN_INFO "qeth_fs_exit\n");
498 qeth_remove_procfs_entries();
499 qeth_remove_sysfs_entries();
500}
501
502
503module_init(qeth_fs_init);
504module_exit(qeth_fs_exit);
505
506MODULE_LICENSE("GPL");
507*/
diff --git a/drivers/s390/net/qeth_sys.c b/drivers/s390/net/qeth_sys.c
index ddd6019ba09..0ea185f70f7 100644
--- a/drivers/s390/net/qeth_sys.c
+++ b/drivers/s390/net/qeth_sys.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/qeth_sys.c ($Revision: 1.58 $) 3 * linux/drivers/s390/net/qeth_sys.c ($Revision: 1.60 $)
4 * 4 *
5 * Linux on zSeries OSA Express and HiperSockets support 5 * Linux on zSeries OSA Express and HiperSockets support
6 * This file contains code related to sysfs. 6 * This file contains code related to sysfs.
@@ -20,7 +20,7 @@
20#include "qeth_mpc.h" 20#include "qeth_mpc.h"
21#include "qeth_fs.h" 21#include "qeth_fs.h"
22 22
23const char *VERSION_QETH_SYS_C = "$Revision: 1.58 $"; 23const char *VERSION_QETH_SYS_C = "$Revision: 1.60 $";
24 24
25/*****************************************************************************/ 25/*****************************************************************************/
26/* */ 26/* */
@@ -160,7 +160,7 @@ qeth_dev_portname_store(struct device *dev, struct device_attribute *attr, const
160 return -EPERM; 160 return -EPERM;
161 161
162 tmp = strsep((char **) &buf, "\n"); 162 tmp = strsep((char **) &buf, "\n");
163 if ((strlen(tmp) > 8) || (strlen(tmp) < 2)) 163 if ((strlen(tmp) > 8) || (strlen(tmp) == 0))
164 return -EINVAL; 164 return -EINVAL;
165 165
166 card->info.portname[0] = strlen(tmp); 166 card->info.portname[0] = strlen(tmp);
diff --git a/drivers/s390/net/qeth_tso.h b/drivers/s390/net/qeth_tso.h
index e245af3c4cb..3c50b6f24f5 100644
--- a/drivers/s390/net/qeth_tso.h
+++ b/drivers/s390/net/qeth_tso.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/net/qeth_tso.h ($Revision: 1.7 $) 2 * linux/drivers/s390/net/qeth_tso.h ($Revision: 1.8 $)
3 * 3 *
4 * Header file for qeth TCP Segmentation Offload support. 4 * Header file for qeth TCP Segmentation Offload support.
5 * 5 *
@@ -7,7 +7,7 @@
7 * 7 *
8 * Author(s): Frank Pavlic <fpavlic@de.ibm.com> 8 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>
9 * 9 *
10 * $Revision: 1.7 $ $Date: 2005/05/04 20:19:18 $ 10 * $Revision: 1.8 $ $Date: 2005/05/04 20:19:18 $
11 * 11 *
12 */ 12 */
13#ifndef __QETH_TSO_H__ 13#ifndef __QETH_TSO_H__
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 72ddba98f8f..2282c04fee4 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -2044,7 +2044,7 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask)
2044 else { 2044 else {
2045 u8 *scsicmd = cmd->cmnd; 2045 u8 *scsicmd = cmd->cmnd;
2046 2046
2047 if (scsicmd[0] == INQUIRY) { 2047 if ((scsicmd[0] == INQUIRY) && ((scsicmd[1] & 0x03) == 0)) {
2048 u8 *buf = NULL; 2048 u8 *buf = NULL;
2049 unsigned int buflen; 2049 unsigned int buflen;
2050 2050
@@ -2058,9 +2058,6 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask)
2058 * device. 2) Ensure response data format / ATAPI information 2058 * device. 2) Ensure response data format / ATAPI information
2059 * are always correct. 2059 * are always correct.
2060 */ 2060 */
2061 /* FIXME: do we ever override EVPD pages and the like, with
2062 * this code?
2063 */
2064 if (buf[2] == 0) { 2061 if (buf[2] == 0) {
2065 buf[2] = 0x5; 2062 buf[2] = 0x5;
2066 buf[3] = 0x32; 2063 buf[3] = 0x32;
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index e36c21e06d3..4e6709f448e 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -418,8 +418,9 @@ static void scsi_target_reap_work(void *data) {
418 if (--starget->reap_ref == 0 && list_empty(&starget->devices)) { 418 if (--starget->reap_ref == 0 && list_empty(&starget->devices)) {
419 list_del_init(&starget->siblings); 419 list_del_init(&starget->siblings);
420 spin_unlock_irqrestore(shost->host_lock, flags); 420 spin_unlock_irqrestore(shost->host_lock, flags);
421 transport_remove_device(&starget->dev);
421 device_del(&starget->dev); 422 device_del(&starget->dev);
422 transport_unregister_device(&starget->dev); 423 transport_destroy_device(&starget->dev);
423 put_device(&starget->dev); 424 put_device(&starget->dev);
424 return; 425 return;
425 426
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index ad47c1b84c3..812bae62c8e 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -10,7 +10,7 @@ menu "Serial drivers"
10# The new 8250/16550 serial drivers 10# The new 8250/16550 serial drivers
11config SERIAL_8250 11config SERIAL_8250
12 tristate "8250/16550 and compatible serial support" 12 tristate "8250/16550 and compatible serial support"
13 depends on (BROKEN || !(SPARC64 || SPARC32)) 13 depends on (BROKEN || !SPARC)
14 select SERIAL_CORE 14 select SERIAL_CORE
15 ---help--- 15 ---help---
16 This selects whether you want to include the driver for the standard 16 This selects whether you want to include the driver for the standard
@@ -469,14 +469,14 @@ config SERIAL_IMX_CONSOLE
469 469
470config SERIAL_SUNCORE 470config SERIAL_SUNCORE
471 bool 471 bool
472 depends on SPARC32 || SPARC64 472 depends on SPARC
473 select SERIAL_CORE 473 select SERIAL_CORE
474 select SERIAL_CORE_CONSOLE 474 select SERIAL_CORE_CONSOLE
475 default y 475 default y
476 476
477config SERIAL_SUNZILOG 477config SERIAL_SUNZILOG
478 tristate "Sun Zilog8530 serial support" 478 tristate "Sun Zilog8530 serial support"
479 depends on SPARC32 || SPARC64 479 depends on SPARC
480 help 480 help
481 This driver supports the Zilog8530 serial ports found on many Sparc 481 This driver supports the Zilog8530 serial ports found on many Sparc
482 systems. Say Y or M if you want to be able to these serial ports. 482 systems. Say Y or M if you want to be able to these serial ports.
@@ -491,7 +491,7 @@ config SERIAL_SUNZILOG_CONSOLE
491 491
492config SERIAL_SUNSU 492config SERIAL_SUNSU
493 tristate "Sun SU serial support" 493 tristate "Sun SU serial support"
494 depends on (SPARC32 || SPARC64) && PCI 494 depends on SPARC && PCI
495 help 495 help
496 This driver supports the 8250 serial ports that run the keyboard and 496 This driver supports the 8250 serial ports that run the keyboard and
497 mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able 497 mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able
@@ -547,7 +547,7 @@ config PDC_CONSOLE
547 547
548config SERIAL_SUNSAB 548config SERIAL_SUNSAB
549 tristate "Sun Siemens SAB82532 serial support" 549 tristate "Sun Siemens SAB82532 serial support"
550 depends on (SPARC32 || SPARC64) && PCI 550 depends on SPARC && PCI
551 help 551 help
552 This driver supports the Siemens SAB82532 DUSCC serial ports on newer 552 This driver supports the Siemens SAB82532 DUSCC serial ports on newer
553 (PCI) UltraSPARC systems. Say Y or M if you want to be able to these 553 (PCI) UltraSPARC systems. Say Y or M if you want to be able to these
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c
index 89d7bd3eaee..d84476ee659 100644
--- a/drivers/serial/amba-pl011.c
+++ b/drivers/serial/amba-pl011.c
@@ -160,7 +160,7 @@ pl011_rx_chars(struct uart_amba_port *uap)
160 flag = TTY_FRAME; 160 flag = TTY_FRAME;
161 } 161 }
162 162
163 if (uart_handle_sysrq_char(&uap->port, ch, regs)) 163 if (uart_handle_sysrq_char(&uap->port, ch & 255, regs))
164 goto ignore_char; 164 goto ignore_char;
165 165
166 uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); 166 uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag);
diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c
index 1c3b472a3bc..0e2505c073d 100644
--- a/drivers/usb/input/aiptek.c
+++ b/drivers/usb/input/aiptek.c
@@ -2103,7 +2103,7 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
2103 * values. 2103 * values.
2104 */ 2104 */
2105 input_set_abs_params(inputdev, ABS_X, 0, 2999, 0, 0); 2105 input_set_abs_params(inputdev, ABS_X, 0, 2999, 0, 0);
2106 input_set_abs_params(inputdev, ABS_X, 0, 2249, 0, 0); 2106 input_set_abs_params(inputdev, ABS_Y, 0, 2249, 0, 0);
2107 input_set_abs_params(inputdev, ABS_PRESSURE, 0, 511, 0, 0); 2107 input_set_abs_params(inputdev, ABS_PRESSURE, 0, 511, 0, 0);
2108 input_set_abs_params(inputdev, ABS_TILT_X, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0); 2108 input_set_abs_params(inputdev, ABS_TILT_X, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0);
2109 input_set_abs_params(inputdev, ABS_TILT_Y, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0); 2109 input_set_abs_params(inputdev, ABS_TILT_Y, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0);
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 3e470c8b419..cc8e3bf5001 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -536,13 +536,13 @@ config FB_SUN3
536 536
537config FB_SBUS 537config FB_SBUS
538 bool "SBUS and UPA framebuffers" 538 bool "SBUS and UPA framebuffers"
539 depends on (FB = y) && (SPARC32 || SPARC64) 539 depends on (FB = y) && SPARC
540 help 540 help
541 Say Y if you want support for SBUS or UPA based frame buffer device. 541 Say Y if you want support for SBUS or UPA based frame buffer device.
542 542
543config FB_BW2 543config FB_BW2
544 bool "BWtwo support" 544 bool "BWtwo support"
545 depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) 545 depends on (FB = y) && (SPARC && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3)
546 select FB_CFB_FILLRECT 546 select FB_CFB_FILLRECT
547 select FB_CFB_COPYAREA 547 select FB_CFB_COPYAREA
548 select FB_CFB_IMAGEBLIT 548 select FB_CFB_IMAGEBLIT
@@ -551,7 +551,7 @@ config FB_BW2
551 551
552config FB_CG3 552config FB_CG3
553 bool "CGthree support" 553 bool "CGthree support"
554 depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) 554 depends on (FB = y) && (SPARC && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3)
555 select FB_CFB_FILLRECT 555 select FB_CFB_FILLRECT
556 select FB_CFB_COPYAREA 556 select FB_CFB_COPYAREA
557 select FB_CFB_IMAGEBLIT 557 select FB_CFB_IMAGEBLIT
@@ -560,7 +560,7 @@ config FB_CG3
560 560
561config FB_CG6 561config FB_CG6
562 bool "CGsix (GX,TurboGX) support" 562 bool "CGsix (GX,TurboGX) support"
563 depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) 563 depends on (FB = y) && (SPARC && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3)
564 select FB_CFB_COPYAREA 564 select FB_CFB_COPYAREA
565 select FB_CFB_IMAGEBLIT 565 select FB_CFB_IMAGEBLIT
566 help 566 help
@@ -1268,7 +1268,7 @@ config FB_LEO
1268 1268
1269config FB_PCI 1269config FB_PCI
1270 bool "PCI framebuffers" 1270 bool "PCI framebuffers"
1271 depends on (FB = y) && PCI && (SPARC64 || SPARC32) 1271 depends on (FB = y) && PCI && SPARC
1272 1272
1273config FB_IGA 1273config FB_IGA
1274 bool "IGA 168x display support" 1274 bool "IGA 168x display support"
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 5f74df99340..a5d09e159cd 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -6,7 +6,7 @@ menu "Console display driver support"
6 6
7config VGA_CONSOLE 7config VGA_CONSOLE
8 bool "VGA text console" if EMBEDDED || !X86 8 bool "VGA text console" if EMBEDDED || !X86
9 depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC32 && !SPARC64 && !M68K && !PARISC && !ARCH_VERSATILE 9 depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC && !M68K && !PARISC && !ARCH_VERSATILE
10 default y 10 default y
11 help 11 help
12 Saying Y here will allow you to use Linux in text mode through a 12 Saying Y here will allow you to use Linux in text mode through a
@@ -68,7 +68,7 @@ config SGI_NEWPORT_CONSOLE
68 68
69config PROM_CONSOLE 69config PROM_CONSOLE
70 bool "PROM console" 70 bool "PROM console"
71 depends on SPARC32 || SPARC64 71 depends on SPARC
72 help 72 help
73 Say Y to build a console driver for Sun machines that uses the 73 Say Y to build a console driver for Sun machines that uses the
74 terminal emulation built into their console PROMS. 74 terminal emulation built into their console PROMS.
@@ -136,7 +136,7 @@ config FONTS
136config FONT_8x8 136config FONT_8x8
137 bool "VGA 8x8 font" if FONTS 137 bool "VGA 8x8 font" if FONTS
138 depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE 138 depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
139 default y if !SPARC32 && !SPARC64 && !FONTS 139 default y if !SPARC && !FONTS
140 help 140 help
141 This is the "high resolution" font for the VGA frame buffer (the one 141 This is the "high resolution" font for the VGA frame buffer (the one
142 provided by the text console 80x50 (and higher) modes). 142 provided by the text console 80x50 (and higher) modes).
@@ -150,7 +150,7 @@ config FONT_8x8
150config FONT_8x16 150config FONT_8x16
151 bool "VGA 8x16 font" if FONTS 151 bool "VGA 8x16 font" if FONTS
152 depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || STI_CONSOLE || USB_SISUSBVGA_CON 152 depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || STI_CONSOLE || USB_SISUSBVGA_CON
153 default y if !SPARC32 && !SPARC64 && !FONTS 153 default y if !SPARC && !FONTS
154 help 154 help
155 This is the "high resolution" font for the VGA frame buffer (the one 155 This is the "high resolution" font for the VGA frame buffer (the one
156 provided by the VGA text console 80x25 mode. 156 provided by the VGA text console 80x25 mode.
@@ -160,7 +160,7 @@ config FONT_8x16
160config FONT_6x11 160config FONT_6x11
161 bool "Mac console 6x11 font (not supported by all drivers)" if FONTS 161 bool "Mac console 6x11 font (not supported by all drivers)" if FONTS
162 depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE 162 depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
163 default y if !SPARC32 && !SPARC64 && !FONTS && MAC 163 default y if !SPARC && !FONTS && MAC
164 help 164 help
165 Small console font with Macintosh-style high-half glyphs. Some Mac 165 Small console font with Macintosh-style high-half glyphs. Some Mac
166 framebuffer drivers don't support this one at all. 166 framebuffer drivers don't support this one at all.
@@ -176,7 +176,7 @@ config FONT_7x14
176config FONT_PEARL_8x8 176config FONT_PEARL_8x8
177 bool "Pearl (old m68k) console 8x8 font" if FONTS 177 bool "Pearl (old m68k) console 8x8 font" if FONTS
178 depends on FRAMEBUFFER_CONSOLE 178 depends on FRAMEBUFFER_CONSOLE
179 default y if !SPARC32 && !SPARC64 && !FONTS && AMIGA 179 default y if !SPARC && !FONTS && AMIGA
180 help 180 help
181 Small console font with PC-style control-character and high-half 181 Small console font with PC-style control-character and high-half
182 glyphs. 182 glyphs.
@@ -184,24 +184,24 @@ config FONT_PEARL_8x8
184config FONT_ACORN_8x8 184config FONT_ACORN_8x8
185 bool "Acorn console 8x8 font" if FONTS 185 bool "Acorn console 8x8 font" if FONTS
186 depends on FRAMEBUFFER_CONSOLE 186 depends on FRAMEBUFFER_CONSOLE
187 default y if !SPARC32 && !SPARC64 && !FONTS && ARM && ARCH_ACORN 187 default y if !SPARC && !FONTS && ARM && ARCH_ACORN
188 help 188 help
189 Small console font with PC-style control characters and high-half 189 Small console font with PC-style control characters and high-half
190 glyphs. 190 glyphs.
191 191
192config FONT_MINI_4x6 192config FONT_MINI_4x6
193 bool "Mini 4x6 font" 193 bool "Mini 4x6 font"
194 depends on !SPARC32 && !SPARC64 && FONTS 194 depends on !SPARC && FONTS
195 195
196config FONT_SUN8x16 196config FONT_SUN8x16
197 bool "Sparc console 8x16 font" 197 bool "Sparc console 8x16 font"
198 depends on FRAMEBUFFER_CONSOLE && (!SPARC32 && !SPARC64 && FONTS || SPARC32 || SPARC64) 198 depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
199 help 199 help
200 This is the high resolution console font for Sun machines. Say Y. 200 This is the high resolution console font for Sun machines. Say Y.
201 201
202config FONT_SUN12x22 202config FONT_SUN12x22
203 bool "Sparc console 12x22 font (not supported by all drivers)" 203 bool "Sparc console 12x22 font (not supported by all drivers)"
204 depends on FRAMEBUFFER_CONSOLE && (!SPARC32 && !SPARC64 && FONTS || SPARC32 || SPARC64) 204 depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
205 help 205 help
206 This is the high resolution console font for Sun machines with very 206 This is the high resolution console font for Sun machines with very
207 big letters (like the letters used in the SPARC PROM). If the 207 big letters (like the letters used in the SPARC PROM). If the
diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
index 8cb7fb4db44..f0e6512c87f 100644
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -47,7 +47,7 @@ config LOGO_SGI_CLUT224
47 47
48config LOGO_SUN_CLUT224 48config LOGO_SUN_CLUT224
49 bool "224-color Sun Linux logo" 49 bool "224-color Sun Linux logo"
50 depends on LOGO && (SPARC32 || SPARC64) 50 depends on LOGO && SPARC
51 default y 51 default y
52 52
53config LOGO_SUPERH_MONO 53config LOGO_SUPERH_MONO
diff --git a/drivers/video/sbuslib.c b/drivers/video/sbuslib.c
index 646c43f921c..3a74a63dd4f 100644
--- a/drivers/video/sbuslib.c
+++ b/drivers/video/sbuslib.c
@@ -46,6 +46,9 @@ int sbusfb_mmap_helper(struct sbus_mmap_map *map,
46 unsigned long off; 46 unsigned long off;
47 int i; 47 int i;
48 48
49 if (!(vma->vm_flags & (VM_SHARED | VM_MAYSHARE)))
50 return -EINVAL;
51
49 size = vma->vm_end - vma->vm_start; 52 size = vma->vm_end - vma->vm_start;
50 if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) 53 if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
51 return -EINVAL; 54 return -EINVAL;