X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fyousong.git;a=blobdiff_plain;f=package%2Fmac80211%2Fpatches%2F603-rt2x00-introduce-rt2x00eeprom.patch;h=40a2576d7ab1d51d26ab967002f13a27c1425e07;hp=4f35ae899f9c643796738b51747dff67c085369b;hb=44b1688e6c7b4f16f7165fbd560e1183aef69090;hpb=6f6af5bee796b43722d363438a72ba524a3f7586 diff --git a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch index 4f35ae899f..40a2576d7a 100644 --- a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch +++ b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch @@ -41,30 +41,30 @@ + + ee_name = rt2x00dev->ops->lib->get_eeprom_file_name(rt2x00dev); + if (!ee_name) { -+ ERROR(rt2x00dev, -+ "Invalid EEPROM filename.\n" -+ "Please file bug report to %s.\n", DRV_PROJECT); ++ rt2x00_err(rt2x00dev, ++ "Invalid EEPROM filename.\n" ++ "Please file bug report to %s.\n", DRV_PROJECT); + return -EINVAL; + } + -+ INFO(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name); ++ rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name); + + retval = request_firmware(&ee, ee_name, rt2x00dev->dev); + if (retval) { -+ ERROR(rt2x00dev, "Failed to request EEPROM.\n"); ++ rt2x00_err(rt2x00dev, "Failed to request EEPROM.\n"); + return retval; + } + + if (!ee || !ee->size || !ee->data) { -+ ERROR(rt2x00dev, "Failed to read EEPROM file.\n"); ++ rt2x00_err(rt2x00dev, "Failed to read EEPROM file.\n"); + retval = -ENOENT; + goto err_exit; + } + + if (ee->size != rt2x00dev->ops->eeprom_size) { -+ ERROR(rt2x00dev, -+ "EEPROM file size is invalid, it should be %d bytes\n", -+ rt2x00dev->ops->eeprom_size); ++ rt2x00_err(rt2x00dev, ++ "EEPROM file size is invalid, it should be %d bytes\n", ++ rt2x00dev->ops->eeprom_size); + retval = -EINVAL; + goto err_release_ee; + } @@ -101,7 +101,7 @@ +} --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h -@@ -560,6 +560,7 @@ struct rt2x00lib_ops { +@@ -549,6 +549,7 @@ struct rt2x00lib_ops { const u8 *data, const size_t len); int (*load_firmware) (struct rt2x00_dev *rt2x00dev, const u8 *data, const size_t len); @@ -109,7 +109,7 @@ /* * Device initialization/deinitialization handlers. -@@ -721,6 +722,7 @@ enum rt2x00_capability_flags { +@@ -705,6 +706,7 @@ enum rt2x00_capability_flags { REQUIRE_SW_SEQNO, REQUIRE_HT_TX_DESC, REQUIRE_PS_AUTOWAKE, @@ -117,7 +117,7 @@ /* * Capabilities -@@ -976,6 +978,11 @@ struct rt2x00_dev { +@@ -974,6 +976,11 @@ struct rt2x00_dev { const struct firmware *fw; /* @@ -132,12 +132,12 @@ --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h @@ -322,6 +322,22 @@ static inline void rt2x00lib_free_firmwa - #endif /* CONFIG_RT2X00_LIB_FIRMWARE */ + #endif /* CPTCFG_RT2X00_LIB_FIRMWARE */ /* + * EEPROM file handlers. + */ -+#ifdef CONFIG_RT2X00_LIB_EEPROM ++#ifdef CPTCFG_RT2X00_LIB_EEPROM +int rt2x00lib_load_eeprom_file(struct rt2x00_dev *rt2x00dev); +void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev); +#else @@ -148,23 +148,23 @@ +static inline void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev) +{ +} -+#endif /* CONFIG_RT2X00_LIB_EEPROM_FILE */ ++#endif /* CPTCFG_RT2X00_LIB_EEPROM */ + +/* * Debugfs handlers. */ - #ifdef CONFIG_RT2X00_LIB_DEBUGFS + #ifdef CPTCFG_RT2X00_LIB_DEBUGFS --- a/drivers/net/wireless/rt2x00/Kconfig +++ b/drivers/net/wireless/rt2x00/Kconfig -@@ -60,6 +60,7 @@ config RT2800PCI +@@ -69,6 +69,7 @@ config RT2800PCI select RT2X00_LIB_PCI if PCI - select RT2X00_LIB_SOC if RALINK_RT288X || RALINK_RT305X + select RT2X00_LIB_SOC if SOC_RT288X || SOC_RT305X select RT2X00_LIB_FIRMWARE + select RT2X00_LIB_EEPROM select RT2X00_LIB_CRYPTO - select CRC_CCITT - select EEPROM_93CX6 -@@ -212,6 +213,9 @@ config RT2X00_LIB_FIRMWARE + depends on CRC_CCITT + depends on EEPROM_93CX6 +@@ -235,6 +236,9 @@ config RT2X00_LIB_FIRMWARE config RT2X00_LIB_CRYPTO boolean @@ -172,43 +172,48 @@ + boolean + config RT2X00_LIB_LEDS + depends on !BACKPORT_KERNEL_2_6_25 boolean - default y if (RT2X00_LIB=y && LEDS_CLASS=y) || (RT2X00_LIB=m && LEDS_CLASS!=n) --- a/drivers/net/wireless/rt2x00/Makefile +++ b/drivers/net/wireless/rt2x00/Makefile -@@ -7,6 +7,7 @@ rt2x00lib-$(CONFIG_RT2X00_LIB_DEBUGFS) + - rt2x00lib-$(CONFIG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o - rt2x00lib-$(CONFIG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o - rt2x00lib-$(CONFIG_RT2X00_LIB_LEDS) += rt2x00leds.o -+rt2x00lib-$(CONFIG_RT2X00_LIB_EEPROM) += rt2x00eeprom.o +@@ -7,6 +7,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS) + + rt2x00lib-$(CPTCFG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o + rt2x00lib-$(CPTCFG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o + rt2x00lib-$(CPTCFG_RT2X00_LIB_LEDS) += rt2x00leds.o ++rt2x00lib-$(CPTCFG_RT2X00_LIB_EEPROM) += rt2x00eeprom.o - obj-$(CONFIG_RT2X00_LIB) += rt2x00lib.o - obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o + obj-$(CPTCFG_RT2X00_LIB) += rt2x00lib.o + obj-$(CPTCFG_RT2X00_LIB_MMIO) += rt2x00mmio.o --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -89,20 +89,10 @@ static void rt2800pci_mcu_status(struct - rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); +@@ -90,25 +90,11 @@ static void rt2800pci_mcu_status(struct + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); } --#if defined(CONFIG_RALINK_RT288X) || defined(CONFIG_RALINK_RT305X) - static void rt2800pci_read_eeprom_soc(struct rt2x00_dev *rt2x00dev) +-#if defined(CONFIG_SOC_RT288X) || defined(CONFIG_SOC_RT305X) + static int rt2800pci_read_eeprom_soc(struct rt2x00_dev *rt2x00dev) { - void __iomem *base_addr = ioremap(0x1F040000, EEPROM_SIZE); - +- if (!base_addr) +- return -ENOMEM; +- - memcpy_fromio(rt2x00dev->eeprom, base_addr, EEPROM_SIZE); - - iounmap(base_addr); + memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); + return 0; } -#else --static inline void rt2800pci_read_eeprom_soc(struct rt2x00_dev *rt2x00dev) +-static inline int rt2800pci_read_eeprom_soc(struct rt2x00_dev *rt2x00dev) -{ +- return -ENOMEM; -} --#endif /* CONFIG_RALINK_RT288X || CONFIG_RALINK_RT305X */ +-#endif /* CONFIG_SOC_RT288X || CONFIG_SOC_RT305X */ #ifdef CONFIG_PCI static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) -@@ -322,6 +312,20 @@ static int rt2800pci_write_firmware(stru +@@ -332,6 +318,20 @@ static int rt2800pci_write_firmware(stru } /* @@ -229,28 +234,28 @@ * Initialization functions. */ static bool rt2800pci_get_entry_state(struct queue_entry *entry) -@@ -1033,6 +1037,7 @@ static const struct rt2x00lib_ops rt2800 +@@ -1155,6 +1155,7 @@ static const struct rt2x00lib_ops rt2800 .get_firmware_name = rt2800pci_get_firmware_name, .check_firmware = rt2800_check_firmware, .load_firmware = rt2800_load_firmware, -+ .get_eeprom_file_name = rt2800pci_get_eeprom_file_name, - .initialize = rt2x00pci_initialize, - .uninitialize = rt2x00pci_uninitialize, ++ .get_eeprom_file_name = rt2800pci_get_eeprom_file_name, + .initialize = rt2x00mmio_initialize, + .uninitialize = rt2x00mmio_uninitialize, .get_entry_state = rt2800pci_get_entry_state, --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c -@@ -1163,6 +1163,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de - - rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; +@@ -1325,6 +1325,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de + INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); + INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); + retval = rt2x00lib_load_eeprom_file(rt2x00dev); + if (retval) + goto exit; + /* - * Initialize work. + * Let the driver probe the device to detect the capabilities. */ -@@ -1287,6 +1291,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ +@@ -1455,6 +1459,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ */ if (rt2x00dev->drv_data) kfree(rt2x00dev->drv_data); @@ -272,3 +277,13 @@ rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_SOC); +--- a/.local-symbols ++++ b/.local-symbols +@@ -272,6 +272,7 @@ RT2X00_LIB_FIRMWARE= + RT2X00_LIB_CRYPTO= + RT2X00_LIB_LEDS= + RT2X00_LIB_DEBUGFS= ++RT2X00_LIB_EEPROM= + RT2X00_DEBUG= + RTLWIFI= + RTLWIFI_DEBUG=