diff options
Diffstat (limited to 'target/linux/x86/patches-3.2')
5 files changed, 0 insertions, 699 deletions
diff --git a/target/linux/x86/patches-3.2/001-alix_platform.patch b/target/linux/x86/patches-3.2/001-alix_platform.patch deleted file mode 100644 index de7005b38..000000000 --- a/target/linux/x86/patches-3.2/001-alix_platform.patch +++ /dev/null @@ -1,132 +0,0 @@ -index dc5f1d3..a24bf8c 100644 ---- a/arch/x86/platform/geode/alix.c -+++ b/arch/x86/platform/geode/alix.c -@@ -6,6 +6,7 @@ - * - * Copyright (C) 2008 Constantin Baranov <const@mimas.ru> - * Copyright (C) 2011 Ed Wildgoose <kernel@wildgooses.com> -+ * and Philip Prindeville <philipp@redfish-solutions.com> - * - * TODO: There are large similarities with leds-net5501.c - * by Alessandro Zummo <a.zummo@towertech.it> -@@ -24,14 +25,47 @@ - #include <linux/leds.h> - #include <linux/platform_device.h> - #include <linux/gpio.h> -+#include <linux/input.h> -+#include <linux/gpio_keys.h> -+#include <linux/dmi.h> - - #include <asm/geode.h> - --static int force = 0; -+#define BIOS_SIGNATURE_TINYBIOS 0xf0000 -+#define BIOS_SIGNATURE_COREBOOT 0x500 -+#define BIOS_REGION_SIZE 0x10000 -+ -+static bool force = 0; - module_param(force, bool, 0444); - /* FIXME: Award bios is not automatically detected as Alix platform */ - MODULE_PARM_DESC(force, "Force detection as ALIX.2/ALIX.3 platform"); - -+static struct gpio_keys_button alix_gpio_buttons[] = { -+ { -+ .code = KEY_RESTART, -+ .gpio = 24, -+ .active_low = 1, -+ .desc = "Reset button", -+ .type = EV_KEY, -+ .wakeup = 0, -+ .debounce_interval = 100, -+ .can_disable = 0, -+ } -+}; -+static struct gpio_keys_platform_data alix_buttons_data = { -+ .buttons = alix_gpio_buttons, -+ .nbuttons = ARRAY_SIZE(alix_gpio_buttons), -+ .poll_interval = 20, -+}; -+ -+static struct platform_device alix_buttons_dev = { -+ .name = "gpio-keys-polled", -+ .id = 1, -+ .dev = { -+ .platform_data = &alix_buttons_data, -+ } -+}; -+ - static struct gpio_led alix_leds[] = { - { - .name = "alix:1", -@@ -64,17 +98,22 @@ static struct platform_device alix_leds_ - .dev.platform_data = &alix_leds_data, - }; - -+static struct __initdata platform_device *alix_devs[] = { -+ &alix_buttons_dev, -+ &alix_leds_dev, -+}; -+ - static void __init register_alix(void) - { - /* Setup LED control through leds-gpio driver */ -- platform_device_register(&alix_leds_dev); -+ platform_add_devices(alix_devs, ARRAY_SIZE(alix_devs)); - } - - static int __init alix_present(unsigned long bios_phys, - const char *alix_sig, - size_t alix_sig_len) - { -- const size_t bios_len = 0x00010000; -+ const size_t bios_len = BIOS_REGION_SIZE; - const char *bios_virt; - const char *scan_end; - const char *p; -@@ -109,7 +148,8 @@ static int __init alix_present(unsigned - *a = '\0'; - - tail = p + alix_sig_len; -- if ((tail[0] == '2' || tail[0] == '3')) { -+ if ((tail[0] == '2' || tail[0] == '3' || tail[0] == '6')) { -+ - printk(KERN_INFO - "%s: system is recognized as \"%s\"\n", - KBUILD_MODNAME, name); -@@ -120,6 +160,24 @@ static int __init alix_present(unsigned - return 0; - } - -+static bool __init alix_present_dmi(void) -+{ -+ const char *vendor, *product; -+ -+ vendor = dmi_get_system_info(DMI_SYS_VENDOR); -+ if (!vendor || strcmp(vendor, "PC Engines")) -+ return false; -+ -+ product = dmi_get_system_info(DMI_PRODUCT_NAME); -+ if (!product || (strcmp(product, "ALIX.2D") && strcmp(product, "ALIX.6"))) -+ return false; -+ -+ printk(KERN_INFO "%s: system is recognized as \"%s %s\"\n", -+ KBUILD_MODNAME, vendor, product); -+ -+ return true; -+} -+ - static int __init alix_init(void) - { - const char tinybios_sig[] = "PC Engines ALIX."; -@@ -128,8 +186,9 @@ static int __init alix_init(void) - if (!is_geode()) - return 0; - -- if (alix_present(0xf0000, tinybios_sig, sizeof(tinybios_sig) - 1) || -- alix_present(0x500, coreboot_sig, sizeof(coreboot_sig) - 1)) -+ if (alix_present(BIOS_SIGNATURE_TINYBIOS, tinybios_sig, sizeof(tinybios_sig) - 1) || -+ alix_present(BIOS_SIGNATURE_COREBOOT, coreboot_sig, sizeof(coreboot_sig) - 1) || -+ alix_present_dmi()) - register_alix(); - - return 0; diff --git a/target/linux/x86/patches-3.2/002-geos_platform.patch b/target/linux/x86/patches-3.2/002-geos_platform.patch deleted file mode 100644 index 2f5d32e8e..000000000 --- a/target/linux/x86/patches-3.2/002-geos_platform.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 31bc84d45320dad2392384381ad4d818ab21087a Mon Sep 17 00:00:00 2001 -From: "Philip A. Prindeville" <philipp@redfish-solutions.com> -Date: Wed, 18 Jan 2012 11:15:33 -0700 -Subject: [PATCH 1/1] geos: Platform driver for Geos and Geos2 single-board - computers. - -Trivial platform driver for Traverse Technologies Geos and Geos2 -single-board computers. Uses SMBIOS to identify platform. -Based on progressive revisions of the leds-net5501 driver that -was rewritten by Ed Wildgoose as a platform driver. - -Supports GPIO-based LEDs (3) and 1 polled button which is -typically used for a soft reset. - -Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com> -Reviewed-by: Ed Wildgoose <ed@wildgooses.com> -Acked-by: Andres Salomon <dilinger@queued.net> -Cc: Richard Purdie <rpurdie@rpsys.net> -Cc: Andrew Morton <akpm@linux-foundation.org> ---- - arch/x86/Kconfig | 7 ++ - arch/x86/platform/geode/Makefile | 1 + - arch/x86/platform/geode/geos.c | 128 ++++++++++++++++++++++++++++++++++++++ - 3 files changed, 136 insertions(+), 0 deletions(-) - create mode 100644 arch/x86/platform/geode/geos.c - ---- a/arch/x86/Kconfig -+++ b/arch/x86/Kconfig -@@ -2090,6 +2090,13 @@ config ALIX - - Note: You have to set alix.force=1 for boards with Award BIOS. - -+config GEOS -+ bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)" -+ select GPIOLIB -+ depends on DMI -+ ---help--- -+ This option enables system support for the Traverse Technologies GEOS. -+ - endif # X86_32 - - config AMD_NB ---- a/arch/x86/platform/geode/Makefile -+++ b/arch/x86/platform/geode/Makefile -@@ -1 +1,2 @@ - obj-$(CONFIG_ALIX) += alix.o -+obj-$(CONFIG_GEOS) += geos.o ---- /dev/null -+++ b/arch/x86/platform/geode/geos.c -@@ -0,0 +1,128 @@ -+/* -+ * System Specific setup for Traverse Technologies GEOS. -+ * At the moment this means setup of GPIO control of LEDs. -+ * -+ * Copyright (C) 2008 Constantin Baranov <const@mimas.ru> -+ * Copyright (C) 2011 Ed Wildgoose <kernel@wildgooses.com> -+ * and Philip Prindeville <philipp@redfish-solutions.com> -+ * -+ * TODO: There are large similarities with leds-net5501.c -+ * by Alessandro Zummo <a.zummo@towertech.it> -+ * In the future leds-net5501.c should be migrated over to platform -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 -+ * as published by the Free Software Foundation. -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/io.h> -+#include <linux/string.h> -+#include <linux/module.h> -+#include <linux/leds.h> -+#include <linux/platform_device.h> -+#include <linux/gpio.h> -+#include <linux/input.h> -+#include <linux/gpio_keys.h> -+#include <linux/dmi.h> -+ -+#include <asm/geode.h> -+ -+static struct gpio_keys_button geos_gpio_buttons[] = { -+ { -+ .code = KEY_RESTART, -+ .gpio = 3, -+ .active_low = 1, -+ .desc = "Reset button", -+ .type = EV_KEY, -+ .wakeup = 0, -+ .debounce_interval = 100, -+ .can_disable = 0, -+ } -+}; -+static struct gpio_keys_platform_data geos_buttons_data = { -+ .buttons = geos_gpio_buttons, -+ .nbuttons = ARRAY_SIZE(geos_gpio_buttons), -+ .poll_interval = 20, -+}; -+ -+static struct platform_device geos_buttons_dev = { -+ .name = "gpio-keys-polled", -+ .id = 1, -+ .dev = { -+ .platform_data = &geos_buttons_data, -+ } -+}; -+ -+static struct gpio_led geos_leds[] = { -+ { -+ .name = "geos:1", -+ .gpio = 6, -+ .default_trigger = "default-on", -+ .active_low = 1, -+ }, -+ { -+ .name = "geos:2", -+ .gpio = 25, -+ .default_trigger = "default-off", -+ .active_low = 1, -+ }, -+ { -+ .name = "geos:3", -+ .gpio = 27, -+ .default_trigger = "default-off", -+ .active_low = 1, -+ }, -+}; -+ -+static struct gpio_led_platform_data geos_leds_data = { -+ .num_leds = ARRAY_SIZE(geos_leds), -+ .leds = geos_leds, -+}; -+ -+static struct platform_device geos_leds_dev = { -+ .name = "leds-gpio", -+ .id = -1, -+ .dev.platform_data = &geos_leds_data, -+}; -+ -+static struct __initdata platform_device *geos_devs[] = { -+ &geos_buttons_dev, -+ &geos_leds_dev, -+}; -+ -+static void __init register_geos(void) -+{ -+ /* Setup LED control through leds-gpio driver */ -+ platform_add_devices(geos_devs, ARRAY_SIZE(geos_devs)); -+} -+ -+static int __init geos_init(void) -+{ -+ const char *vendor, *product; -+ -+ if (!is_geode()) -+ return 0; -+ -+ vendor = dmi_get_system_info(DMI_SYS_VENDOR); -+ if (!vendor || strcmp(vendor, "Traverse Technologies")) -+ return 0; -+ -+ product = dmi_get_system_info(DMI_PRODUCT_NAME); -+ if (!product || strcmp(product, "Geos")) -+ return 0; -+ -+ printk(KERN_INFO "%s: system is recognized as \"%s %s\"\n", -+ KBUILD_MODNAME, vendor, product); -+ -+ register_geos(); -+ -+ return 0; -+} -+ -+module_init(geos_init); -+ -+MODULE_AUTHOR("Philip Prindeville <philipp@redfish-solutions.com>"); -+MODULE_DESCRIPTION("Traverse Technologies Geos System Setup"); -+MODULE_LICENSE("GPL"); diff --git a/target/linux/x86/patches-3.2/005-net5501_platform.patch b/target/linux/x86/patches-3.2/005-net5501_platform.patch deleted file mode 100644 index 290e79a02..000000000 --- a/target/linux/x86/patches-3.2/005-net5501_platform.patch +++ /dev/null @@ -1,307 +0,0 @@ ---- a/arch/x86/Kconfig -+++ b/arch/x86/Kconfig -@@ -2097,6 +2097,12 @@ config GEOS - ---help--- - This option enables system support for the Traverse Technologies GEOS. - -+config NET5501 -+ bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)" -+ select GPIOLIB -+ ---help--- -+ This option enables system support for the Soekris Engineering net5501. -+ - endif # X86_32 - - config AMD_NB ---- a/arch/x86/platform/geode/Makefile -+++ b/arch/x86/platform/geode/Makefile -@@ -1,2 +1,3 @@ - obj-$(CONFIG_ALIX) += alix.o -+obj-$(CONFIG_NET5501) += net5501.o - obj-$(CONFIG_GEOS) += geos.o ---- /dev/null -+++ b/arch/x86/platform/geode/net5501.c -@@ -0,0 +1,154 @@ -+/* -+ * System Specific setup for Soekris net5501 -+ * At the moment this means setup of GPIO control of LEDs and buttons -+ * on net5501 boards. -+ * -+ * -+ * Copyright (C) 2008-2009 Tower Technologies -+ * Written by Alessandro Zummo <a.zummo@towertech.it> -+ * -+ * Copyright (C) 2008 Constantin Baranov <const@mimas.ru> -+ * Copyright (C) 2011 Ed Wildgoose <kernel@wildgooses.com> -+ * and Philip Prindeville <philipp@redfish-solutions.com> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 -+ * as published by the Free Software Foundation. -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/io.h> -+#include <linux/string.h> -+#include <linux/module.h> -+#include <linux/leds.h> -+#include <linux/platform_device.h> -+#include <linux/gpio.h> -+#include <linux/input.h> -+#include <linux/gpio_keys.h> -+ -+#include <asm/geode.h> -+ -+#define BIOS_REGION_BASE 0xffff0000 -+#define BIOS_REGION_SIZE 0x00010000 -+ -+static struct gpio_keys_button net5501_gpio_buttons[] = { -+ { -+ .code = KEY_RESTART, -+ .gpio = 24, -+ .active_low = 1, -+ .desc = "Reset button", -+ .type = EV_KEY, -+ .wakeup = 0, -+ .debounce_interval = 100, -+ .can_disable = 0, -+ } -+}; -+static struct gpio_keys_platform_data net5501_buttons_data = { -+ .buttons = net5501_gpio_buttons, -+ .nbuttons = ARRAY_SIZE(net5501_gpio_buttons), -+ .poll_interval = 20, -+}; -+ -+static struct platform_device net5501_buttons_dev = { -+ .name = "gpio-keys-polled", -+ .id = 1, -+ .dev = { -+ .platform_data = &net5501_buttons_data, -+ } -+}; -+ -+static struct gpio_led net5501_leds[] = { -+ { -+ .name = "net5501:1", -+ .gpio = 6, -+ .default_trigger = "default-on", -+ .active_low = 1, -+ }, -+}; -+ -+static struct gpio_led_platform_data net5501_leds_data = { -+ .num_leds = ARRAY_SIZE(net5501_leds), -+ .leds = net5501_leds, -+}; -+ -+static struct platform_device net5501_leds_dev = { -+ .name = "leds-gpio", -+ .id = -1, -+ .dev.platform_data = &net5501_leds_data, -+}; -+ -+static struct __initdata platform_device *net5501_devs[] = { -+ &net5501_buttons_dev, -+ &net5501_leds_dev, -+}; -+ -+static void __init register_net5501(void) -+{ -+ /* Setup LED control through leds-gpio driver */ -+ platform_add_devices(net5501_devs, ARRAY_SIZE(net5501_devs)); -+} -+ -+struct net5501_board { -+ u16 offset; -+ u16 len; -+ char *sig; -+}; -+ -+static struct net5501_board __initdata boards[] = { -+ { 0xb7b, 7, "net5501" }, /* net5501 v1.33/1.33c */ -+ { 0xb1f, 7, "net5501" }, /* net5501 v1.32i */ -+}; -+ -+static bool __init net5501_present(void) -+{ -+ int i; -+ unsigned char *rombase, *bios; -+ bool found = false; -+ -+ rombase = ioremap(BIOS_REGION_BASE, BIOS_REGION_SIZE - 1); -+ if (!rombase) { -+ printk(KERN_ERR "%s: failed to get rombase\n", KBUILD_MODNAME); -+ return found; -+ } -+ -+ bios = rombase + 0x20; /* null terminated */ -+ -+ if (memcmp(bios, "comBIOS", 7)) -+ goto unmap; -+ -+ for (i = 0; i < ARRAY_SIZE(boards); i++) { -+ unsigned char *model = rombase + boards[i].offset; -+ -+ if (!memcmp(model, boards[i].sig, boards[i].len)) { -+ printk(KERN_INFO "%s: system is recognized as \"%s\"\n", -+ KBUILD_MODNAME, model); -+ -+ found = true; -+ break; -+ } -+ } -+ -+unmap: -+ iounmap(rombase); -+ return found; -+} -+ -+static int __init net5501_init(void) -+{ -+ if (!is_geode()) -+ return 0; -+ -+ if (!net5501_present()) -+ return 0; -+ -+ register_net5501(); -+ -+ return 0; -+} -+ -+module_init(net5501_init); -+ -+MODULE_AUTHOR("Philip Prindeville <philipp@redfish-solutions.com>"); -+MODULE_DESCRIPTION("Soekris net5501 System Setup"); -+MODULE_LICENSE("GPL"); ---- a/drivers/leds/leds-net5501.c -+++ /dev/null -@@ -1,97 +0,0 @@ --/* -- * Soekris board support code -- * -- * Copyright (C) 2008-2009 Tower Technologies -- * Written by Alessandro Zummo <a.zummo@towertech.it> -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License version 2 -- * as published by the Free Software Foundation. -- */ -- --#include <linux/kernel.h> --#include <linux/init.h> --#include <linux/io.h> --#include <linux/string.h> --#include <linux/leds.h> --#include <linux/platform_device.h> --#include <linux/gpio.h> --#include <linux/module.h> -- --#include <asm/geode.h> -- --static const struct gpio_led net5501_leds[] = { -- { -- .name = "error", -- .gpio = 6, -- .default_trigger = "default-on", -- }, --}; -- --static struct gpio_led_platform_data net5501_leds_data = { -- .num_leds = ARRAY_SIZE(net5501_leds), -- .leds = net5501_leds, --}; -- --static struct platform_device net5501_leds_dev = { -- .name = "leds-gpio", -- .id = -1, -- .dev.platform_data = &net5501_leds_data, --}; -- --static void __init init_net5501(void) --{ -- platform_device_register(&net5501_leds_dev); --} -- --struct soekris_board { -- u16 offset; -- char *sig; -- u8 len; -- void (*init)(void); --}; -- --static struct soekris_board __initdata boards[] = { -- { 0xb7b, "net5501", 7, init_net5501 }, /* net5501 v1.33/1.33c */ -- { 0xb1f, "net5501", 7, init_net5501 }, /* net5501 v1.32i */ --}; -- --static int __init soekris_init(void) --{ -- int i; -- unsigned char *rombase, *bios; -- -- if (!is_geode()) -- return 0; -- -- rombase = ioremap(0xffff0000, 0xffff); -- if (!rombase) { -- printk(KERN_INFO "Soekris net5501 LED driver failed to get rombase"); -- return 0; -- } -- -- bios = rombase + 0x20; /* null terminated */ -- -- if (strncmp(bios, "comBIOS", 7)) -- goto unmap; -- -- for (i = 0; i < ARRAY_SIZE(boards); i++) { -- unsigned char *model = rombase + boards[i].offset; -- -- if (strncmp(model, boards[i].sig, boards[i].len) == 0) { -- printk(KERN_INFO "Soekris %s: %s\n", model, bios); -- -- if (boards[i].init) -- boards[i].init(); -- break; -- } -- } -- --unmap: -- iounmap(rombase); -- return 0; --} -- --arch_initcall(soekris_init); -- --MODULE_LICENSE("GPL"); ---- a/drivers/leds/Kconfig -+++ b/drivers/leds/Kconfig -@@ -89,16 +89,6 @@ config LEDS_NET48XX - This option enables support for the Soekris net4801 and net4826 error - LED. - --config LEDS_NET5501 -- tristate "LED Support for Soekris net5501 series Error LED" -- depends on LEDS_TRIGGERS -- depends on X86 && GPIO_CS5535 -- select LEDS_TRIGGER_DEFAULT_ON -- default n -- help -- Add support for the Soekris net5501 board (detection, error led -- and GPIO). -- - config LEDS_FSG - tristate "LED Support for the Freecom FSG-3" - depends on LEDS_CLASS ---- a/drivers/leds/Makefile -+++ b/drivers/leds/Makefile -@@ -14,7 +14,6 @@ obj-$(CONFIG_LEDS_MIKROTIK_RB532) += led - obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o - obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o - obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o --obj-$(CONFIG_LEDS_NET5501) += leds-net5501.o - obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o - obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o - obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o diff --git a/target/linux/x86/patches-3.2/901-8139cp_eeprom_delay.patch b/target/linux/x86/patches-3.2/901-8139cp_eeprom_delay.patch deleted file mode 100644 index 388755d26..000000000 --- a/target/linux/x86/patches-3.2/901-8139cp_eeprom_delay.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7d03f5a48e4d90854275b06433626243b3b3db17 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Fri, 30 Dec 2011 23:44:33 +0000 -Subject: [PATCH] 8139cp/8139too: do not read into reserved registers - -delay_eeprom() use long read for Cfg9346 register(offset 0x50) which may read -into the area of reserved register(offset 0x53). Use byte read instead. - -Signed-off-by: Jason Wang <jasowang@redhat.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/realtek/8139cp.c | 2 +- - drivers/net/ethernet/realtek/8139too.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/realtek/8139cp.c -+++ b/drivers/net/ethernet/realtek/8139cp.c -@@ -1590,7 +1590,7 @@ static int cp_set_mac_address(struct net - No extra delay is needed with 33Mhz PCI, but 66Mhz may change this. - */ - --#define eeprom_delay() readl(ee_addr) -+#define eeprom_delay() readb(ee_addr) - - /* The EEPROM commands include the alway-set leading bit. */ - #define EE_EXTEND_CMD (4) ---- a/drivers/net/ethernet/realtek/8139too.c -+++ b/drivers/net/ethernet/realtek/8139too.c -@@ -1122,7 +1122,7 @@ static void __devexit rtl8139_remove_one - No extra delay is needed with 33Mhz PCI, but 66Mhz may change this. - */ - --#define eeprom_delay() (void)RTL_R32(Cfg9346) -+#define eeprom_delay() (void)RTL_R8(Cfg9346) - - /* The EEPROM commands include the alway-set leading bit. */ - #define EE_WRITE_CMD (5) diff --git a/target/linux/x86/patches-3.2/902-8139cp_config_rx_mode.patch b/target/linux/x86/patches-3.2/902-8139cp_config_rx_mode.patch deleted file mode 100644 index e5c17d16f..000000000 --- a/target/linux/x86/patches-3.2/902-8139cp_config_rx_mode.patch +++ /dev/null @@ -1,45 +0,0 @@ -From f872b237c1750221932e715da2552225afe4a95c Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Fri, 30 Dec 2011 23:44:42 +0000 -Subject: [PATCH] 8139cp: properly config rx mode after resuming - -Rx mode should be reset after resming, so unconditionally updating rx -mode rather than conditionally updating based on the value we -remembered, otherwise unexpected value may be used by the nic after -resuming. - -btw. I find and test this when debugging guest hibernation in qemu, as -I did not have a 8139cp card in hand, this patch is untested in a -physical 8139cp card, plase review it carefully. - -Signed-off-by: Jason Wang <jasowang@redhat.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/realtek/8139cp.c | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - ---- a/drivers/net/ethernet/realtek/8139cp.c -+++ b/drivers/net/ethernet/realtek/8139cp.c -@@ -860,7 +860,6 @@ static void __cp_set_rx_mode (struct net - struct cp_private *cp = netdev_priv(dev); - u32 mc_filter[2]; /* Multicast hash filter */ - int rx_mode; -- u32 tmp; - - /* Note: do not reorder, GCC is clever about common statements. */ - if (dev->flags & IFF_PROMISC) { -@@ -887,11 +886,9 @@ static void __cp_set_rx_mode (struct net - } - - /* We can safely update without stopping the chip. */ -- tmp = cp_rx_config | rx_mode; -- if (cp->rx_config != tmp) { -- cpw32_f (RxConfig, tmp); -- cp->rx_config = tmp; -- } -+ cp->rx_config = cp_rx_config | rx_mode; -+ cpw32_f(RxConfig, cp->rx_config); -+ - cpw32_f (MAR0 + 0, mc_filter[0]); - cpw32_f (MAR0 + 4, mc_filter[1]); - } |