diff options
Diffstat (limited to 'package/mac80211/patches/301-rt2x00-Add-rt2x00soc-bus-module.patch')
-rw-r--r-- | package/mac80211/patches/301-rt2x00-Add-rt2x00soc-bus-module.patch | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/package/mac80211/patches/301-rt2x00-Add-rt2x00soc-bus-module.patch b/package/mac80211/patches/301-rt2x00-Add-rt2x00soc-bus-module.patch deleted file mode 100644 index 5709432168..0000000000 --- a/package/mac80211/patches/301-rt2x00-Add-rt2x00soc-bus-module.patch +++ /dev/null @@ -1,249 +0,0 @@ -From 671e062837669b6d4a5e75d7d08ff485a7510e80 Mon Sep 17 00:00:00 2001 -From: Ivo van Doorn <IvDoorn@gmail.com> -Date: Sat, 8 Aug 2009 23:42:51 +0200 -Subject: [PATCH 1/3] rt2x00: Add rt2x00soc bus module - -Add new library module for SoC drivers. -This is needed to fully support the platform -driver part of rt2800pci. - -Based on original patch from Felix. - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> -Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> ---- - drivers/net/wireless/rt2x00/Kconfig | 4 + - drivers/net/wireless/rt2x00/Makefile | 1 + - drivers/net/wireless/rt2x00/rt2x00soc.c | 159 +++++++++++++++++++++++++++++++ - drivers/net/wireless/rt2x00/rt2x00soc.h | 52 ++++++++++ - 4 files changed, 216 insertions(+), 0 deletions(-) - create mode 100644 drivers/net/wireless/rt2x00/rt2x00soc.c - create mode 100644 drivers/net/wireless/rt2x00/rt2x00soc.h - ---- a/drivers/net/wireless/rt2x00/Makefile -+++ b/drivers/net/wireless/rt2x00/Makefile -@@ -11,6 +11,7 @@ rt2x00lib-$(CONFIG_RT2X00_LIB_HT) += rt2 - - obj-$(CONFIG_RT2X00_LIB) += rt2x00lib.o - obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o -+obj-$(CONFIG_RT2X00_LIB_SOC) += rt2x00soc.o - obj-$(CONFIG_RT2X00_LIB_USB) += rt2x00usb.o - obj-$(CONFIG_RT2400PCI) += rt2400pci.o - obj-$(CONFIG_RT2500PCI) += rt2500pci.o ---- /dev/null -+++ b/drivers/net/wireless/rt2x00/rt2x00soc.c -@@ -0,0 +1,159 @@ -+/* -+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project -+ <http://rt2x00.serialmonkey.com> -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the -+ Free Software Foundation, Inc., -+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+/* -+ Module: rt2x00soc -+ Abstract: rt2x00 generic soc device routines. -+ */ -+ -+#include <linux/bug.h> -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/platform_device.h> -+ -+#include "rt2x00.h" -+#include "rt2x00soc.h" -+ -+static void rt2x00soc_free_reg(struct rt2x00_dev *rt2x00dev) -+{ -+ kfree(rt2x00dev->rf); -+ rt2x00dev->rf = NULL; -+ -+ kfree(rt2x00dev->eeprom); -+ rt2x00dev->eeprom = NULL; -+} -+ -+static int rt2x00soc_alloc_reg(struct rt2x00_dev *rt2x00dev) -+{ -+ struct platform_device *pdev = to_platform_device(rt2x00dev->dev); -+ struct resource *res; -+ -+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!res) -+ return -ENODEV; -+ -+ rt2x00dev->csr.base = (void __iomem *)KSEG1ADDR(res->start); -+ if (!rt2x00dev->csr.base) -+ goto exit; -+ -+ rt2x00dev->eeprom = kzalloc(rt2x00dev->ops->eeprom_size, GFP_KERNEL); -+ if (!rt2x00dev->eeprom) -+ goto exit; -+ -+ rt2x00dev->rf = kzalloc(rt2x00dev->ops->rf_size, GFP_KERNEL); -+ if (!rt2x00dev->rf) -+ goto exit; -+ -+ return 0; -+ -+exit: -+ ERROR_PROBE("Failed to allocate registers.\n"); -+ rt2x00soc_free_reg(rt2x00dev); -+ -+ return -ENOMEM; -+} -+ -+int rt2x00soc_probe(struct platform_device *pdev, -+ const unsigned short chipset, -+ const struct rt2x00_ops *ops) -+{ -+ struct ieee80211_hw *hw; -+ struct rt2x00_dev *rt2x00dev; -+ int retval; -+ -+ hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw); -+ if (!hw) { -+ ERROR_PROBE("Failed to allocate hardware.\n"); -+ return -ENOMEM; -+ } -+ -+ platform_set_drvdata(pdev, hw); -+ -+ rt2x00dev = hw->priv; -+ rt2x00dev->dev = &pdev->dev; -+ rt2x00dev->ops = ops; -+ rt2x00dev->hw = hw; -+ rt2x00dev->irq = platform_get_irq(pdev, 0); -+ rt2x00dev->name = pdev->dev.driver->name; -+ -+ rt2x00_set_chip_rt(rt2x00dev, chipset); -+ -+ retval = rt2x00soc_alloc_reg(rt2x00dev); -+ if (retval) -+ goto exit_free_device; -+ -+ retval = rt2x00lib_probe_dev(rt2x00dev); -+ if (retval) -+ goto exit_free_reg; -+ -+ return 0; -+ -+exit_free_reg: -+ rt2x00soc_free_reg(rt2x00dev); -+ -+exit_free_device: -+ ieee80211_free_hw(hw); -+ -+ return retval; -+} -+ -+int rt2x00soc_remove(struct platform_device *pdev) -+{ -+ struct ieee80211_hw *hw = platform_get_drvdata(pdev); -+ struct rt2x00_dev *rt2x00dev = hw->priv; -+ -+ /* -+ * Free all allocated data. -+ */ -+ rt2x00lib_remove_dev(rt2x00dev); -+ rt2x00soc_free_reg(rt2x00dev); -+ ieee80211_free_hw(hw); -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(rt2x00soc_remove); -+ -+#ifdef CONFIG_PM -+int rt2x00soc_suspend(struct platform_device *pdev, pm_message_t state) -+{ -+ struct ieee80211_hw *hw = platform_get_drvdata(pdev); -+ struct rt2x00_dev *rt2x00dev = hw->priv; -+ -+ return rt2x00lib_suspend(rt2x00dev, state); -+} -+EXPORT_SYMBOL_GPL(rt2x00soc_suspend); -+ -+int rt2x00soc_resume(struct platform_device *pdev) -+{ -+ struct ieee80211_hw *hw = platform_get_drvdata(pdev); -+ struct rt2x00_dev *rt2x00dev = hw->priv; -+ -+ return rt2x00lib_resume(rt2x00dev); -+} -+EXPORT_SYMBOL_GPL(rt2x00soc_resume); -+#endif /* CONFIG_PM */ -+ -+/* -+ * rt2x00soc module information. -+ */ -+MODULE_AUTHOR(DRV_PROJECT); -+MODULE_VERSION(DRV_VERSION); -+MODULE_DESCRIPTION("rt2x00 soc library"); -+MODULE_LICENSE("GPL"); ---- /dev/null -+++ b/drivers/net/wireless/rt2x00/rt2x00soc.h -@@ -0,0 +1,52 @@ -+/* -+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project -+ <http://rt2x00.serialmonkey.com> -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the -+ Free Software Foundation, Inc., -+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+/* -+ Module: rt2x00soc -+ Abstract: Data structures for the rt2x00soc module. -+ */ -+ -+#ifndef RT2X00SOC_H -+#define RT2X00SOC_H -+ -+#define KSEG1ADDR(__ptr) __ptr -+ -+#define __rt2x00soc_probe(__chipset, __ops) \ -+static int __rt2x00soc_probe(struct platform_device *pdev) \ -+{ \ -+ return rt2x00soc_probe(pdev, (__chipset), (__ops)); \ -+} -+ -+/* -+ * SoC driver handlers. -+ */ -+int rt2x00soc_probe(struct platform_device *pdev, -+ const unsigned short chipset, -+ const struct rt2x00_ops *ops); -+int rt2x00soc_remove(struct platform_device *pdev); -+#ifdef CONFIG_PM -+int rt2x00soc_suspend(struct platform_device *pdev, pm_message_t state); -+int rt2x00soc_resume(struct platform_device *pdev); -+#else -+#define rt2x00soc_suspend NULL -+#define rt2x00soc_resume NULL -+#endif /* CONFIG_PM */ -+ -+#endif /* RT2X00SOC_H */ |